靜態成員
使用static 關鍵字來實現類級別的變量和函數
靜態方法不能訪問非靜態成員
class Person{
static String name = '1';
static void show(){
print(11111);
}
}
對象操作符
? 條件運算符
as 類型轉換
is 類型判斷
.. 級聯操作
class Person {
String name;
num age;
Person(this.name,this.age);
void printInfo() {
print("${this.name}---${this.age}");
}
}
main(){
// Person p;
// p?.printInfo();
// Person p=new Person('張三', 20);
// p?.printInfo();
// Person p=new Person('張三', 20);
// if(p is Person){
// p.name="李四";
// }
// p.printInfo();
// print(p is Object);
}
類的繼承
子類通過extends 關鍵字來繼承父類
子類會繼承父類裏面共有方法 不會繼承構造函數
子類不能重寫父類的getter和setter
class s extends Person{
s(String name,num age ): super(name,age){
}
}
//類初始化後 super 的意思是把子類的構造函數傳遞給父類中
// 子類複寫父類的方法 添加
@override
//自類調用父類方法
super.xxxx();
抽象類
主要用於定義標準,子類可以繼承抽象類也可實現抽象類接口
1.抽象類通過abstract 關鍵字來定義
2.dart中抽象方法不能用abstract聲明,dart中沒有方法體的方法稱爲抽象類
3.子類繼承抽象類必須實現抽象方法
4.如果抽象類當做接口實現的話必須實現抽象類定義所有屬性和方法
5.抽象類不能被實例化只有子類繼承
abstract class More{
eat();
run();
printInfp(){
print('抽象方法')
}
}
接口
如 golang 中interface{}
dart 中普通類或抽象類都可以作爲接口被實現,使用 implements 關鍵字實現
dart 中接口如實現類是普通類,會將普通類和衝向中的屬性的方法全部覆寫一遍
抽象類可以定義抽象方法,一般使用抽象類定義接口
class demos implements more{
@override
....
}
- 一個類實現多個接口
abstract classA{
String name;
}
abstract classB{
String name;
}
class C implements A,B{
@override
printA(){
....
}
printB(){
....
}
}
- Mixins 多繼承 關鍵字 with
1.mixins 類智能集成Object 不能繼承其他類
2.mixins 沒有構造函數
3.一個類可以mixins多個mixins類
4.不是接口不是繼承
mixins 的實例是其超類的子類