کلاس abstract در جاوا کلاسی است که نمیتوان از آن نمونهسازی (ایجاد اشیا) کرد و به عنوان یک کلاس پایه برای سایر کلاسها استفاده میشود. کلاسهای abstract میتوانند شامل متدهای abstract و غیر-abstract باشند. متدهای abstract فقط امضا (signature) دارند و بدنهای ندارند؛ بنابراین کلاسهایی که از یک کلاس abstract ارث میبرند، باید این متدها را پیادهسازی کنند.
تعریف کلاس abstract
برای تعریف یک کلاس abstract، از کلیدواژه abstract استفاده میکنیم:
public abstract class Animal {
// یک متد abstract که باید در کلاسهای فرزند پیادهسازی شود.
public abstract void makeSound();
// یک متد معمولی با بدنه که نیازی به پیادهسازی در کلاسهای فرزند ندارد.
public void sleep() {
System.out.println("The animal is sleeping.");
}
}
ارثبری از کلاس abstract
کلاسهایی که از یک کلاس abstract ارث میبرند، باید تمامی متدهای abstract آن را پیادهسازی کنند. در غیر این صورت، خود آن کلاس نیز باید abstract تعریف شود.
public class Dog extends Animal {
// پیادهسازی متد abstract
@Override
public void makeSound() {
System.out.println("Bark");
}
}
public class Main {
public static void main(String[] args) {
// ایجاد نمونهای از کلاس Dog
Animal myDog = new Dog();
myDog.makeSound(); // خروجی: Bark
myDog.sleep(); // خروجی: The animal is sleeping.
}
}
نکات کلیدی:
متدهای abstract: متدهایی که فقط امضا دارند و بدنهای ندارند. این متدها باید توسط کلاسهای فرزند پیادهسازی شوند.
نمونهسازی: نمیتوان از یک کلاس abstract مستقیماً نمونهسازی کرد.
کلاسهای abstract: میتوانند شامل متدهای معمولی (با بدنه) نیز باشند که نیازی به پیادهسازی توسط کلاسهای فرزند ندارند.
کلاسهای abstract معمولاً برای تعریف یک چارچوب (framework) یا رابطی (interface) برای کلاسهای دیگر استفاده میشوند تا یک الگوی ثابت را رعایت کنند.
کلاس abstract در جاوا کلاسی است که نمیتوان از آن نمونهسازی (ایجاد اشیا) کرد و به عنوان یک کلاس پایه برای سایر کلاسها استفاده میشود. کلاسهای abstract میتوانند شامل متدهای abstract و غیر-abstract باشند. متدهای abstract فقط امضا (signature) دارند و بدنهای ندارند؛ بنابراین کلاسهایی که از یک کلاس abstract ارث میبرند، باید این متدها را پیادهسازی کنند.
تعریف کلاس abstract برای تعریف یک کلاس abstract، از کلیدواژه abstract استفاده میکنیم:
public abstract class Animal { // یک متد abstract که باید در کلاسهای فرزند پیادهسازی شود. public abstract void makeSound();
}
ارثبری از کلاس abstract کلاسهایی که از یک کلاس abstract ارث میبرند، باید تمامی متدهای abstract آن را پیادهسازی کنند. در غیر این صورت، خود آن کلاس نیز باید abstract تعریف شود.
public class Dog extends Animal { // پیادهسازی متد abstract @Override public void makeSound() { System.out.println("Bark"); } }
public class Main { public static void main(String[] args) { // ایجاد نمونهای از کلاس Dog Animal myDog = new Dog(); myDog.makeSound(); // خروجی: Bark myDog.sleep(); // خروجی: The animal is sleeping. } }
نکات کلیدی: متدهای abstract: متدهایی که فقط امضا دارند و بدنهای ندارند. این متدها باید توسط کلاسهای فرزند پیادهسازی شوند. نمونهسازی: نمیتوان از یک کلاس abstract مستقیماً نمونهسازی کرد. کلاسهای abstract: میتوانند شامل متدهای معمولی (با بدنه) نیز باشند که نیازی به پیادهسازی توسط کلاسهای فرزند ندارند. کلاسهای abstract معمولاً برای تعریف یک چارچوب (framework) یا رابطی (interface) برای کلاسهای دیگر استفاده میشوند تا یک الگوی ثابت را رعایت کنند.