شرمنده میشه این Abstract بیشتر توضیح بدی تو اموزش انچنان درک نکردم مرسی
سلام،
وقتی میخوای یه کلاس بسازی که یه جورایی نقشه یا قالب کلی برای بقیه کلاسها باشه، از کلاس Abstract استفاده میکنی. کلاسهای Abstract یه جورایی مثل یه راهنمای کلی عمل میکنن که کلاسهای دیگه باید ازش پیروی کنن.
حالا چطوری؟ وقتی یه کلاس رو به عنوان Abstract تعریف میکنی، نمیتونی مستقیم ازش یه شیء بسازی. یعنی خود کلاس Abstract رو نمیتونی استفاده کنی، ولی میتونی ازش به عنوان پایه برای کلاسهای دیگه استفاده کنی. این کلاسها باید متدهایی رو که توی کلاس Abstract تعریف شده، حتماً پیادهسازی کنن.
abstract class Animal {
abstract public function makeSound();
}
class Dog extends Animal {
public function makeSound() {
echo "Woof!";
}
}
class Cat extends Animal {
public function makeSound() {
echo "Meow!";
}
}
$dog = new Dog();
$dog->makeSound(); // Woof!
$cat = new Cat();
$cat->makeSound(); // Meow!
اینجا Animal یه کلاس Abstract هست. توش یه متد به اسم makeSound داریم که هنوز پیادهسازی نشده، فقط گفتیم که هر حیوونی که از این کلاس ارثبری میکنه باید این متد رو داشته باشه. بعدش کلاسهای Dog و Cat این متد رو پیادهسازی کردن، یعنی گفتن هر حیوون چه صدایی بده.
اینطوری با استفاده از کلاس Abstract، مطمئن میشی که هر کلاسی که ازش ارثبری میکنه، حتماً یه سری متدهای مشخص رو داشته باشه. در این مرحله سعی کنید قانون کلاس abstract رو یاد بگیرید. در آینده با یادگیری design patternها اینکه چطور از این کلاس استفاده کنید مشخص خواهد شد. براساس انتخاب یک الگوی طراحی متوجه خواهید شد به چه شکلی عمل کنید.