Dart 入門到跑路 ------ 類的繼承、靜態成員、抽象類、接口(五)

靜態成員

  使用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 的實例是其超類的子類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章