اینترفیس یا
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 در همه ی زبان ها به همین صورت هستند و تنها در مواردی سینتکس آنها متفاوت است.