آموزش مقدماتی جاوا | چکیدگی
خطای دسترسی
برای ثبت پاسخ، ابتدا باید در سایت وارد شوید.
مفهوم چکیدگی و کلاس های 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 ها هم می تواند محقق شود، که در بخش بعد در این باره می خوانیم.
برای ثبت پرسش ابتدا در سایت وارد شوید.