X

آموزش مقدماتی جاوا | چکیدگی

مفهوم چکیدگی و کلاس های abstract

abstraction یا چکیده کردن اطلاعات، فرایندی است که در آن جزئیات مشخصی مخفی می شود و فقط اطلاعات مورد نیاز به کاربر نمایش داده می شود. از کلمه کلیدی abstract برای اینکار استفاده می شود و می تواند برای کلاس ها و متد ها مورد استفاده قرار بگیرد.

کلاس های abstract: از این کلاس ها نمی توان برای ساخت اشیاء استفاده کرد. برای دسترسی به آنها حتماً باید از کلاس دیگری که از این کلاس ارث می برد استفاده کنیم.

متد های abstract: این متد ها فقط در کلاس های abstract می توانند استفاده شوند، و هیچ بدنه و کدی ندارند. بدنه ی آنها توسط کلاس های وارث ساخته می شود.

مثال: یک کلاس abstract که می تواند هم متد عادی و هم متد abstract داشته باشد. همانطور که می بینید، متد abstract این کلاس، هیچ بدنه ای ندارد:

abstract class Animal {
  public abstract void animalSound();
  public void sleep() {
    System.out.println("Zzz");
  }
}

برای مثال بالا، نمی توان هیچ شیئی برای کلاس Animal ایجاد کرد و کد زیر با خطا مواجه خواهد شد:

Animal myObj = new Animal(); // will generate an error

برای دسترسی به کلاس abstract، باید از کلاس های وارث استفاده کرد. برای مثال کلاس Animal که در بخش چند ریختگی آورده شد را به یک کلاس abstract تبدیل می کنیم. از کلمه ی کلیدی extends برای ساخت کلاس وارث استفاده می کنیم.

همانطور که می بینید متد animalSound در کلاس Animal بدنه ای ندارد و بدنه ی آن در کلاس وارث Pig ایجاد شده است.

// Abstract class
abstract class Animal {
  // Abstract method (does not have a body)
  public abstract void animalSound();
  // Regular method
  public void sleep() {
    System.out.println("Zzz");
  }
}

// Subclass (inherit from Animal)
class Pig extends Animal {
  public void animalSound() {
    // The body of animalSound() is provided here
    System.out.println("The pig says: wee wee");
  }
}

class MyMainClass {
  public static void main(String[] args) {
    Pig myPig = new Pig(); // Create a Pig object
    myPig.animalSound();
    myPig.sleep();
  }
}

 

چرا از کلاس ها و متد های abstract استفاده می کنیم؟

برای امنیت بیشتر – جزئیات و بدنه ی متد ها را از کاربر مخفی می کنیم و فقط اطلاعات مهم را نمایش می دهیم.

نکته: چکیده سازی در interface ها هم می تواند محقق شود، که در بخش بعد در این باره می خوانیم.

پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1