Dart中implements实现多个接口
1abstract class A { 2 String name; 3 printA(); 4} 5 6abstract class B { 7 printB(); 8} 9 10class C implements A,B{ 11 @override 12 String name; 13 14 @override 15 printA() { 16 print('printA'); 17 } 18 19 @override 20 printB() { 21 // TODO: implement printB 22 return null; 23 } 24 25} 26 27main(List<String> args) { 28 C c = new C(); 29 c.printA(); 30}
Dart中的mixins 使用
mixins的中文意思就是混入,就是在类中混入其他功能
在dart中可以使用mixins实现类似多继承的功能
因为mixins可以使用的条件,随着dart版本一直在变,这里讲的是dart2.x中使用mixins的条件:
1.作为mixins的类只能继承自object,不能继承其他类
2.作为mixins的类不能有构造函数
3.一个类可以mixins多个mixin类
4.mixins绝不是继承,也不是接口,而是一种全新的特性
1class A { 2 String info = 'a'; 3 printA() { 4 print('printA'); 5 } 6} 7 8class B { 9 printB() { 10 print('printB'); 11 } 12} 13 14class C with A, B {} 15 16void main() { 17 C c = new C(); 18 c.printA(); 19 c.printB(); 20 print(c.info); 21}
Dart中的mixins 实现类似多继承功能
1class Person { 2 String name; 3 Person(this.name); 4} 5 6class A extends Person{ //在A继承了Person后, 这个时候不能再进行mixins 7 String info = 'a'; 8 printA() { 9 print('printA'); 10 } 11} 12 13class B { 14 // B({}) //不能在类里面写构造函数,否则也无法进行mixins 15 printB() { 16 print('printB'); 17 } 18} 19 20class C extends Person with A, B {} //---划重点----才可以继承Person类,Person类中也可以加构造函数 21 22void main() { 23 C c = new C(); 24 c.printA(); 25 c.printB(); 26 print(c.info); 27}
Dart中的mixins 的类型
1class A { 2 String info = 'a'; 3 printA() { 4 print('printA'); 5 } 6} 7 8class B { 9 printB() { 10 print('printB'); 11 } 12} 13 14class C with A, B {} 15 16void main() { 17 C c = new C(); 18 print(c is C); //true 19 print(c is A); //true 20 print(c is B); //true 21}
