mixin A on B{}
語(yǔ)法:定義mixin混合類(A)前标,該類通過(guò)with關(guān)鍵字混入類中系枪,必須在on關(guān)鍵字后面類(B)的子類基礎(chǔ)上使用单料。
class C extend B with A{}
with A的類需要繼承B或子類固该,可以with多個(gè)mixin類。
class C extend B with A1,A2{}
當(dāng)mixin類(A)和extend的類(B)以及C類有方法共同方法時(shí)脆诉,優(yōu)先調(diào)用C類重寫(xiě)的方法甚亭,其次,with最后面的mixin類的方法(A2)击胜。
class B {
fun() => print('B');
}
mixin A1 on B {
fun() {
print('A1');
}
}
mixin A2 on B {
fun() {
print('A2');
}
}
class C extends B with A1, A2 {
}
打印A2亏狰。
在A1類和A2類的print()方法前加super.fun();
方法,調(diào)用with前一個(gè)mixin類的方法偶摔。
打印A2 A1 B暇唾。
C繼承的并不是單純的超類B,而是一條類似BA1A2的繼承鏈,A2中fun方法的super.fun()方法策州,查找的是BA1中的方法瘸味。
任重而道遠(yuǎn)