TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 609 subscribers
Post #36 199
#PHP #OOP
اینترفیس یا interface :
اینترفیس ها شبیه به abstract class ها هستند، اما در برخی موارد تفاوت هایی دارند که به آن ها می پردازیم.
در ابتدا روش استفاده از interface ها را مورد بررسی قرار می دهیم:
برای تعریف یک interface به صورت زیر عمل می کنیم:
interface Fruit{

}
و برای تعریف توابع ها همانند abstract class متد هایی بدون بدنه تعریف می کنیم:
public function color();
و در نهایت شکل کلی یک interface به صورت زیر است:
interface Fruit {
public function color();
public function price();
public function taste();
}
برای ارث بری آن از کلیدواژه implements استفاده می شود و به صورت زیر مورد استفاده قرار می گیرد:
class Banana implements Fruit {
public function color() {
return 'yellow';
}
public function price() {
return '1$';';
}
public function taste() {
return 'sweet';
}
}

و اما تفاوت های interface و abstract class :
1- در interface ها تنها می توان توابع بدون بدنه تعریف کرد با این تفاوت که در abstract class ها علاوه برا توابع بدون بدنه توابع دارای بدنه نیز می توان تعریف کرد.
2- هر کلاس تنها می تواند یک abstract class را extends کند ولی در interface ها این گونه نیست و می توان چندین interface را implements کرد.
3- در interface ها تنها می توان متد های بدون بدنه و خالص تعریف کرد ولی در abstract class ها می توان متغییر و خصوصیات را نیز تعریف کرد.


چه موقع از آنها استفاده کنیم؟
زمانی که قراردادها را برای کلاس‌های مختلف تعریف می‌کنید و تنها نیاز به تعریف متدهای خالص بدون بدنه دارید، از interface استفاده کنید.
اما در صورتی که می‌خواهید یک کلاس پایه بسازید که خود آن تعدادی متد نیز داشته باشد و همچنین به کلاس‌های زیرمجموعه اجازه دهید برخی از متدها را پیاده‌سازی کنند، از abstract class استفاده کنید.

مثال های بالا با زبان PHP هستند، اما پایه و اساس interface در همه ی زبان ها به همین صورت هستند و تنها در مواردی سینتکس آنها متفاوت است.
  • 🔥 3
  • 👍 1
More from @amirhdeveloper
  1. Oct 8, 2026‍ اولین نسخه‌ی «قیچی» منتشر شد! ✂️ راست‌ش چند وقتی هست که پیامک‌های تبلیغاتی و اسپم، شدیدا…
  2. Oct 7, 2026بیاید از قدرت های لاراگرام بگم لاراگرام یک full-stack و ai-ready فریمورک برای توسعه ربات ه…
  3. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  4. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  5. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  6. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →