習慣寫OO的人,一定對物件或屬性的封裝不陌生,Dart也支援getter、setter的寫法 如以下(可以在線上編輯器上運行) :
class Customer{
String _name ;
String get name() => "HELLO "+ _name ; //getter
set name(String value) => _name = value ; //setter
Customer(this._name);
}
class NumTest{
int _n1 ;
int get n1(){return (_n1 == null)?0:_n1; } //加入判斷式,如果為null,return 0
set n1(int v) => _n1 = v;
}
main() {
var t = new Customer("andy");
print(t.name); //display HELLO andy
var n = new NumTest();
print(n.n1); //display 0
}
再來試寫多型的override,宣告方式與java一樣,用extends關鍵字,display方法輸出String型別的資料,在輸出時可用${}將變數置入其中,${}會將變數值直接輸出為字串,挺方便的。
class Customer{
String _name = "andy" ;
String get name() => _name ;
set name(String value) => _name = value ;
String display(){return this._name;}
}
class c extends Customer {
String _name = "bill" ;
String get name() => _name ;
set name(String value) => _name = value ;
String display(){return this._name;}
}
main() {
var c = new Customer();
print( "Hello ${c.display()}"); //display Hello andy
}