10.還不會擴充套件Dart中的類?

CoorChice發表於2019-03-19

目錄傳送門:《Flutter快速上手指南》先導篇

繼承

Dart 使用 extends 關鍵字來繼承一個類。

特別的是,在 Dart 中,建構函式是不能被繼承的。

除了預設建構函式是空引數的類,其建構函式是能夠被子類自動繼承的。

如果子類想要呼叫父類的建構函式,可以使用 super 關鍵字。

class NewPoint extends Point{
  NewPoint(x, y):super(x, y);
  NewPoint.newOrigin():super.origin(){
    print('$x, $y');
  }
}
複製程式碼

當呼叫 NewPoint.newOrigin() 時,會先呼叫父類的 origin 建構函式,然後再執行該建構函式內的表示式。

其中, NewPoint.newOrigin() 形式的建構函式被成為 命名建構函式

實現

在 Dart 中,使用 implements 關鍵字來繼承一個類。

它意味著子類繼承了父類的 API,但不繼承其實現。

不同於 Java,Dart 可以直接繼承一個普通類。

// A person. The implicit interface contains greet().
class Person {
  // In the interface, but visible only in this library.
  final _name;

  // Not in the interface, since this is a constructor.
  Person(this._name);

  // In the interface.
  String greet(String who) => 'Hello, $who. I am $_name.';
}

// An implementation of the Person interface.
class Impostor implements Person {
  get _name => '';

  String greet(String who) => 'Hi $who. Do you know who I am?';
}

String greetBob(Person person) => person.greet('Bob');

void main() {
  print(greetBob(Person('Kathy')));
  print(greetBob(Impostor()));
}複製程式碼

目錄傳送門:《Flutter快速上手指南》先導篇

如何找到我?

傳送門:CoorChice 的主頁

傳送門:CoorChice 的 Github


相關文章