/**
* Dart中的mixins实现类似多继承的功能 但不是多继承 而且全新的一种特性 也叫混入策略 使用关键字 with来定义
*
* 因为mixins使用的条件,随着Dart版本一直在变,这里讲的是Dart2.x中使用mixins的条件:
* 1、作为mixins的类只能继承在Object,不能继承其他类
* 2、作为mixins的类不能有构造函数
* 3、一个类可以mixins多个mixins类
*/
class A{
printA(){
print("A");
}
run(){
print("A run");
}
}
class B{
printB(){
print("B");
}
run(){
print("B run");
}
}
class D{
D(){
}
printD(){
print("D");
}
run(){
print("B run");
}
}
//D类中有构造方法 所以不能mixins 但是可以extends
class C extends D with A,B{
}
void main(){
C c = new C();
c.printA();
c.printB();
c.printD();
//A和B有相同的方法 会执行with最后一个类的方法 那如果extends类也有相同的方法 那也会覆盖掉继承类相同的方法
c.run();
}