OOP - Interfaces

🔹 Interface چیست؟

  • یک Interface (رابط) شبیه به Abstract Class هست، اما فقط شامل تعریف متدها (بدون بدنه) میشه.

  • کلاس‌هایی که از یک Interface استفاده می‌کنن، مجبور هستن تمام متدهای اون رو پیاده‌سازی کنن.

  • از Interface برای تعریف قوانین مشترک بین چند کلاس مختلف استفاده میشه.

🔹 تعریف یک Interface

<?php interface Animal { public function makeSound(); }

📌 درون Interface فقط میشه متد تعریف کرد (بدون بدنه).

🔹 پیاده‌سازی Interface در کلاس

<?php interface Animal { public function makeSound(); } class Dog implements Animal { public function makeSound() { return "Woof!"; } } class Cat implements Animal { public function makeSound() { return "Meow!"; } } $dog = new Dog(); echo $dog->makeSound(); // خروجی: Woof! $cat = new Cat(); echo "<br>" . $cat->makeSound(); // خروجی: Meow! ?>

📌 هر کلاسی که implements می‌کنه، باید تمام متدهای Interface رو پیاده‌سازی کنه.

🔹 چندین Interface

یک کلاس می‌تونه چندین Interface رو همزمان پیاده‌سازی کنه:

<?php interface Animal { public function makeSound(); } interface Pet { public function owner(); } class Dog implements Animal, Pet { public function makeSound() { return "Woof!"; } public function owner() { return "This dog has an owner."; } } $dog = new Dog(); echo $dog->makeSound(); // Woof! echo "<br>"; echo $dog->owner(); // This dog has an owner. ?>

🔹 تفاوت Interface و Abstract Class

ویژگیInterfaceAbstract Class
متدفقط تعریف متد (بدون بدنه)می‌تونه متد انتزاعی + متد معمولی داشته باشه
چندگانه بودنیک کلاس می‌تونه چندین Interface پیاده‌سازی کنهیک کلاس فقط می‌تونه از یک Abstract Class ارث‌بری کنه
متغیر/ویژگیاجازه تعریف Property ندارهمی‌تونه Property داشته باشه
استفادهبرای ایجاد قراردادها و قوانین مشترکبرای ایجاد یک پایه/قالب کلی برای کلاس‌ها

✅ خلاصه

  • Interface = قراردادی برای کلاس‌ها (فقط شامل تعریف متدها).

  • کلاس‌ها با implements یک Interface رو پیاده‌سازی می‌کنن.

  • یک کلاس می‌تونه چندین Interface داشته باشه.

  • Interface بیشتر برای استانداردسازی رفتار کلاس‌ها استفاده میشه.