介面所表示的意思是:「所有實作出本介面的類別,看起來都應該像這樣」。
Dart 並沒有像其他物件導向語言一樣有關鍵字 interface
。因為在 Dart 中存在的是隱性介面。
所謂隱性介面就是一般的類別也能夠化身為介面 (Interface),讓其他的類別實作 (Implement)。
有一個 Car 類別,內容如下:
class Car {
final String brand;
final String color;
Car(this.brand, this.color);
void horn() => throw UnimplementedError();
}
implements
關鍵字來實作該“隱性介面”。class Truck implements Car{
@override
String get brand;
@override
String get color;
Truck(this.brand, this.color);
@override
void horn() {
print('BBB');
}
}
@override
提示這是覆寫的屬性或是函數。在 implements
後方用逗號隔出各個需實作的介面
class ElectricCar implements Car, Battey{}
介面與抽象類別,為介面與實作的隔離,提供了更結構化的方式。
當方法依附在類別而非介面時,你只能透過該類別或是其子類別來使用該方法。
使用介面,可以把與類別的依賴轉為與介面的依賴,可以寫出更具重用性的程式碼。
抽象類別使用關鍵字 extends
實作抽象類別,每一個類別都只能實作一個抽象類別,而介面利用關鍵字 implements
實作,可以同時實作多個介面。