什么是Mixins?Mixins的中文意思是混入,即在一個類中混入其他類疫粥。首先我們需要知道茬斧,Mixins不是接口,也不是繼承梗逮,它是Dart中的一個新特性项秉,主要實現(xiàn)了類似于多繼承的功能。
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的類,不能帶有構(gòu)造函數(shù)艘虎,否則也不能混入。
當我們在混入的兩個類中咒吐,如果這兩個類中出現(xiàn)類同名方法野建,此時属划,后者將覆蓋前者的方法:
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();
}
運行結(jié)果
所以在混入多個類時,需要確定是否存在同名方法候生,以及根據(jù)情況同眯,選擇混入的順序。(該情況唯鸭,在同時有繼承和混入的情況下也存在须蜗,后者將會覆蓋前者的同名方法。)
最后目溉,我們需要知道明肮, Mixins的類系是其超類的子類型,即:
class A{
}
class B{
}
class C with A,B{
}
main(){
print(c is A);
print(c is B);
print(c is C);
}
運行結(jié)果