در زبان برنامهنویسی دارت، یک کلاس انتزاعی (Abstract Class) کلاسی است که نمیتوان بهطور مستقیم از آن نمونهسازی کرد. این نوع کلاسها معمولاً بهعنوان پایهای برای سایر کلاسها عمل میکنند و میتوانند متدهای انتزاعی (بدون پیادهسازی) یا پیادهسازیهای جزئی برای متدها داشته باشند.
تعریف کلاس انتزاعی
برای تعریف یک کلاس انتزاعی در دارت، از کلمه کلیدی abstract
استفاده میشود.
مثال:
abstract class Animal {
// متد انتزاعی (بدون پیادهسازی)
void makeSound();
// متد با پیادهسازی
void sleep() {
print("The animal is sleeping");
}
}
class Dog extends Animal {
// پیادهسازی متد انتزاعی
@override
void makeSound() {
print("Woof!");
}
}
void main() {
// نمیتوان از کلاس abstract مستقیماً شیء ساخت
// Animal animal = Animal(); // خطا
Dog dog = Dog();
dog.makeSound(); // خروجی: Woof!
dog.sleep(); // خروجی: The animal is sleeping
}
توضیحات:
- کلاس انتزاعی: کلاس
Animal
بهعنوان یک کلاس انتزاعی تعریف شده است. در این کلاس متدmakeSound
بهصورت انتزاعی (بدون پیادهسازی) تعریف شده است. - کلاس مشتقشده: کلاس
Dog
از کلاسAnimal
ارثبری میکند و متدmakeSound
را پیادهسازی میکند. - عدم امکان ساخت شیء از کلاس انتزاعی: نمیتوان بهطور مستقیم از کلاس
Animal
شیء ساخت. باید یک کلاس مشتقشده که متدهای انتزاعی را پیادهسازی کرده باشد، ایجاد شود.
کلاسهای انتزاعی در دارت برای طراحی ساختارهایی که نیاز به اشتراکگذاری متدها و ویژگیها بین چندین کلاس دارند، بسیار مفید هستند.