目錄
如果要查看完整代碼,這是鏈接可供參考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);