Flutter學習-day06 Dart繼承封裝多態抽象

目錄

抽象

繼承

封裝和多態

接口

測試類


如果要查看完整代碼,這是鏈接可供參考https://download.csdn.net/download/u010184528/12459239

抽象

abstract定義規則,子類繼承父類,必須實現的方法

例如父類

abstract class Person{
  String name;
  int age;

  Person(this.name, this.age);

  Person.second(this.name, this.age);

  void show() {
    print('$name $age');
  }

  //抽象方法定義規則,要求子類必須繼承
  void marry();
}

 

繼承

子類繼承父類,必須實現marry方法

class Boy extends Person{
  double height;
  Boy(String name, int age,double height):super(name,age){
    this.height=height;
  }

  //方法重寫
  @override
  void show(){
    // super.show();
    print('$name $age $height');
  }

  void playBoy(){
    print('男生喜歡打王者榮耀');
  }

  @override
  void marry() {
    print('我是一個男生,要找一個女朋友結婚');
  }

}

 

封裝和多態

dart中的多態體現在方法重寫,向上轉型

比如上面Boy子類中的方法重寫,我們也可以再定義一個Girl子類重寫;

向上轉型,向下轉型這裏做一個簡單的介紹,具體代碼可在我的資源中下載去看

向上轉型可以提取公共方法,向下轉型可以轉化到子類,調用子類方法,向上轉型也是一種封裝

  • A is B 判斷A是否是B類型
  • A as B 把A類型轉換爲B類型
  if(p is Boy){
    Boy boy=p as Boy;
    boy.playBoy();
  }

 

接口

dart中聲明接口,和聲明抽象類一樣,都是用abstract修飾

abstract class Love{
  makeLove();
}

那麼父類就可以繼承該接口

abstract class Person implements Love{
  String name;
  int age;

  Person(this.name, this.age);

  Person.second(this.name, this.age);

  void show() {
    print('$name $age');
  }

  //抽象方法定義規則,要求子類必須繼承
  void marry();

  @override
  makeLove() {
    print('男人和女人可以啪啪啪');
  }
}

 

測試類

  //父類引用子類對象
  Person p1=new Boy('小明', 25, 175);
  marryTest(p1);

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章