/* mixins的中文意思是混入,就是在類中混入其餘功能。 在Dart中能夠使用mixins實現相似多繼承的功能,with關鍵字 由於mixins使用的條件,隨着Dart版本一直在變,這裏講的是Dart2.x中使用mixins的條件: 一、做爲mixins的類只能繼承自Object,不能繼承其餘類 二、做爲mixins的類不能有構造函數 三、一個類能夠mixins多個mixins類 四、mixins毫不是繼承,也不是接口,而是一種全新的特性 */ class A { String info="this is A"; void printA(){ print("A"); } } class B { void printB(){ print("B"); } } class C with A,B{ } void main(){ var c=new C(); c.printA(); c.printB(); print(c.info); }
/* mixins的中文意思是混入,就是在類中混入其餘功能。 在Dart中能夠使用mixins實現相似多繼承的功能 由於mixins使用的條件,隨着Dart版本一直在變,這裏講的是Dart2.x中使用mixins的條件: 一、做爲mixins的類只能繼承自Object,不能繼承其餘類 二、做爲mixins的類不能有構造函數 三、一個類能夠mixins多個mixins類 四、mixins毫不是繼承,也不是接口,而是一種全新的特性 */ class Person{ String name; num age; Person(this.name,this.age); printInfo(){ print('${this.name}----${this.age}'); } void run(){ print("Person Run"); } } class A { String info="this is A"; void printA(){ print("A"); } void run(){ print("A Run"); } } class B { void printB(){ print("B"); } void run(){ print("B Run"); } } class C extends Person with B,A{//若是A、B中有一樣的方法則誰在後面就執行誰的方法 C(String name, num age) : super(name, age); } void main(){ var c=new C('張三',20); c.printInfo(); // c.printB(); // print(c.info); c.run(); }
/* mixins的實例類型是什麼? 很簡單,mixins的類型就是其超類的子類型。 */ class A { String info="this is A"; void printA(){ print("A"); } } class B { void printB(){ print("B"); } } class C with A,B{ } void main(){ var c=new C(); print(c is C); //true print(c is A); //true print(c is B); //true // var a=new A(); // print(a is Object); }