آموزش جاوا- قسمت 10 (کلاس‌های abstract)

در این قسمت از آموزش جاوا قصد داریم تا به طور خلاصه راجع به مفهوم abstract صحبت کنیم. هر کلاسی که حداقل یک تابع با کلمه کلیدی abstract داشته باشد، خود یک کلاس abstract محسوب شده و با پیشوند abstract تعریف می‌شود.

نکاتی که باید درباره کلاس‌های abstract بدانید:

  • توابع abstract فقط تعریف شده و هیچگاه پیاده سازی نمی‌شوند.
  • کلاس‌های abstract هیچگاه نمونه‌گیری (instantiate) نمی‌شوند. اما می‌توانند توسط کلاس دیگری ارث‌بری شوند.
  • در صورت ارث بردن از اینگونه کلاس‌ها، کلاس‌های زیرشاخه، باید تمام توابع abstract را پیاده‌سازی کنند، در غیر اینصورت کلاس زیرشاخه خود باید به صورت abstract تعریف شود.
  • به مثال زیر توجه کنید:
abstract class abstractClass { 
    abstract void abstractMethod(); 
    void concreteMethod() { // concrete methods are still allowed in abstract classes 
        System.out.println("This is a concrete method."); 
    } 
}

کلاس‌های abstract در مقابل interfaceها:

کلاس‌های abstract می‌توانند شامل فیلدهایی باشند که final و static نیستند، همچنین می‌توان توابعی را در آن‌ها پیاده‌سازی کرد. اما در interface هیچ‌کدام از این موارد مجاز نیست. اگر  یک کلاس‌ abstract تنها شامل توابع abstract باشد، باید به عنوان interface تعریف شود.

هنگامی که یک کلاس abstract یک interface را پیاده‌سازی می‌کند، نیازی نیست تا تمام توابع interface پیاده‌سازی شوند. اگر کلاس از نوع abstract نباشد، باید تمام توابع interface پیاده‌سازی شوند. به مثال زیر توجه کنید:

abstract class X implements Y {
// implements all but one method of Y
}

class XX extends X {
// implements the remaining method in Y
}

تمرین:

تمرین این بخش بسار ساده بوده و صرفا برای آشنا شدن با یک مثال از آموخته‌های این قسمت و درک این مفهوم می‌باشد. برای این تمرین، یک کلاس زیرشاخه از کلاس abstract زیر ایجاد کرده و تابع abstract آن را پیاده‌سازی کنید:

 

abstract class abstractClass { 
    abstract void abstractMethod(); 
    void concreteMethod() { // concrete methods are still allowed in abstract classes 
        System.out.println("This is a concrete method."); 
    } 
}

class B extends abstractClass { 
    void abstractMethod() { 
        System.out.println("B's implementation of abstractMethod."); 
    } 
}

class C extends abstractClass { 
    // Your code goes here
}

public class Main { 
    public static void main(String args[]) { 
        B b = new B(); 
        b.abstractMethod(); 
        b.concreteMethod();
        C c = new C(); 
        c.abstractMethod(); 
        c.concreteMethod();
    } 
}
برای انجام تمرین‌ این مبحث می‌توانید از یک IDE آنلاین مثل tutorialspoint استفاده کنید.

راهنمایی: به کلاس B توجه کنید.

 

بحث این قسمت از آموزش جاوا به پایان رسید. اگر احساس می‌کنید که در درک تفاوت بین interface و abstract ابهامات اندکی وجود دارد، تا چند روز آینده که درباره interfaceها به تفصیل صحبت خواهیم کرد، صبر کرده و همچنان همراه ما باشید….

 

تاریخچه آموزش جاوا به ترتیب:

قسمت اول آموزش جاوا (مقدمه)

قسمت دوم آموزش جاوا (Types and Variables)

قسمت سوم آموزش جاوا (دستورات شرطی)

قسمت چهارم آموزش جاوا (آرایه‌ها)

قسمت پنجم آموزش جاوا (حلقه‌ها)

قسمت ششم آموزش جاوا (توابع)

قسمت هفتم آموزش جاوا (اشیا)

قسمت هشتم آموزش جاوا (ارث‌بری)

قسمت نهم آموزش جاوا (try and catch)

قسمت دهم آموزش جاوا (کلاس‌های abstract)

قسمت یازدهم آموزش جاوا (Interfaces)

قسمت دوازدهم آموزش جاوا (مفهوم Generic)

قسمت سیزدهم آموزش جاوا (Networking)

قسمت چهاردهم آموزش جاوا (مفهوم نخ و رشته)

آموزش جاوا- قسمت 10 (کلاس‌های abstract)
امتیاز دهید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *