/* mixins的中文意思是混入,就是在类中混入其他功能。在Dart中可以使用mixins实现类似多继承的功能,with关键字因为mixins使用的条件,随着Dart版本一直在变,这里讲的是Dart2.x中使用mixins的条件:1、作为mixins的类只能继承自Object,不能继承其他类2、作为mixins的类不能有构造函数3、一个类可以mixins多个mixins类4、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的条件:1、作为mixins的类只能继承自Object,不能继承其他类2、作为mixins的类不能有构造函数3、一个类可以mixins多个mixins类4、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); //trueprint(c is A); //trueprint(c is B); //true// var a=new A();// print(a is Object); }