Dart中的新特性(Mixins)

什么是Mixins?Mixins的中文意思是混入,即在一个类中混入其他类。首先我们需要知道,Mixins不是接口,也不是继承,它是Dart中的一个新特性,主要实现了类似于多继承的功能。

class A{
  
}
class B{
  
}

class C with A,B{

}

在使用的过程中,我们需要注意:
作为Mixins的类,只能继承自object类,不能继承自其他类,如下:

class Person{
  
}
class A extends Person{

}
class B{

}

class C with A,B{
      //此时将会报错:由于A继承自Person,不能混入
}

同时作为Mixins的类,不能带有构造函数,否则也不能混入。
当我们在混入的两个类中,如果这两个类中出现类同名方法,此时,后者将覆盖前者的方法:

class A{
  run(){
    print("A is running");
  }
}
class B{
  run(){
    print("B is running");
  }
}
class C with A,B{

}
main(){
  var c =new C();
  c.run();
}
运行结果

所以在混入多个类时,需要确定是否存在同名方法,以及根据情况,选择混入的顺序。(该情况,在同时有继承和混入的情况下也存在,后者将会覆盖前者的同名方法。)
最后,我们需要知道, Mixins的类系是其超类的子类型,即:

class A{
  
}
class B{
  
}

class C with A,B{

}
main(){
  print(c is A);
  print(c is B);
  print(c is C);
}
运行结果

你可能感兴趣的:(Dart中的新特性(Mixins))