玩轉 Flutter 之 Dart-類基礎知識

玩轉 Flutter 之 Dart-類基礎知識

本文不適合小白與非 IT 相關人員閱讀。


單繼承與 Mixin

Dart 與單繼承,C++ 小夥伴注意了,實現類似多繼承功能的是使用 Mixin(混入)來實現的,即單個基類(超類、父類)加 N 個 Mixin。

形式如下:

// 基類
class Person {
String name;
Person(name):name = name {}
}
// Mixin
abstract class Boy {
// 不要實現構造方法
}
// Mixin
abstract class Girl {
// 不要實現構造方法
}
// 子類實現繼承與 Mixin
class Kid extends Person with Boy, Girl {
int age;
// 初始化順序: 初始化變量在前, super 在後
Kid(name, age)
: age = age,
super(name) {
}
}
main() {
var kid = Kid('zwei', 12);
print(kid.name); // zwei
print(kid.age); // 12
}

上述過於複雜,關注重要的點即可,具體看不懂的地方,後續文章會慢慢跟上。


Person 例子

獲取個實例:

// 基類
class Person {
String name;
// 默認值
int age = 18;
Person(name):name = name {}
void sayGood() {
print('good');
}
}
main() {
var person = Person('zwei');
print(person.name); // zwei
print(person?.age); // 18
person.sayGood(); // good
print('${person.runtimeType}'); // Person
}

不用 new,多好不是?

獲取屬性方法如之前描述:person.name,或者使用 person?.age 。

調用方法則:person.sayGood();傳參自不用說了。

打印類型:person.runtimeType那個${}JSer 應該很熟悉了,就是字符串內部插值。


const Class

// 注意語法,以及構造函數需要是 const 的。 

class Bird {
final size = 24;
const Bird();
}
main() {
var bird1 = const Bird();
var bird2 = const Bird();
print(bird1 == bird2); // true
}

使用 const 來確保兩個實例是一模一樣的。

然後類還有其他多種構造函數,下期寫上。


下期:類構造函數。


分享到:


相關文章: