کلاس ها و روش های چکیده جاوا(Java Abstract Classes and Methods)


انتزاع داده فرآیند پنهان کردن جزئیات خاص و نشان دادن تنها اطلاعات ضروری به کاربر است.

انتزاع را می توان با کلاس های انتزاعی یا
رابط‌ها (که در فصل بعدی بیشتر در مورد آن‌ها خواهید آموخت).


کلمه کلیدی abstract یک اصلاح کننده بدون دسترسی است که برای کلاس ها و روش ها استفاده می شود:

  • کلاس Abstract: یک کلاس محدود شده است که نمی توان از آن برای ایجاد اشیا استفاده کرد (برای دسترسی به آن، باید از کلاس دیگری به ارث برده شود).
  • < br>
  • روش Abstract: فقط در یک کلاس انتزاعی قابل استفاده است و بدنه ندارد. بدنه توسط زیر کلاس (به ارث رسیده از) ارائه می شود.


یک کلاس انتزاعی می تواند هم متدهای انتزاعی و هم متدهای معمولی داشته باشد:




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


از مثال بالا، امکان ایجاد یک شی از کلاس Animal وجود ندارد:



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


برای دسترسی به کلاس انتزاعی، باید از کلاس دیگری به ارث برده شود. بیایید کلاس Animal را که در فصل Polymorphism استفاده کردیم به یک کلاس انتزاعی تبدیل کنیم:



از فصل وراثت به خاطر داشته باشید که از کلمه کلیدی extends برای به ارث بردن از یک کلاس استفاده می‌کنیم. p>



مثال


// 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();
  }
}






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


برای دستیابی به امنیت - جزئیات خاصی را پنهان کنید و فقط موارد مهم را نشان دهید
جزئیات یک شی.


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