什么是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);
}
运行结果
网友评论