Mixins Mixins(混入功能)相當於多繼承,也就是說可以繼承多個類,使用with關鍵字來實現Mixins的功能。 那麼多個類中有相同的方法時候,會被覆蓋嗎?覆蓋的先後是什麼? class A{ void a(){ print("A.a()..."); } } class B{ void a( ...
Mixins
Mixins(混入功能)相當於多繼承,也就是說可以繼承多個類,使用with關鍵字來實現Mixins的功能。
那麼多個類中有相同的方法時候,會被覆蓋嗎?覆蓋的先後是什麼?
class A{ void a(){ print("A.a()..."); } } class B{ void a(){ print("B.a()..."); } void b(){ print("B.b()..."); } }
現在新建一個類D,使得D繼承A和B
// 類D 繼承A和B class D extends A with B{ }
執行:
void main() { var d = new D(); d.a(); }
輸出:
B.a()...
如果我們改變A 和B 順序,如下
// 類D 繼承A和B,B在前A在後 class D extends B with A{ }
再次執行
void main() { var d = new D(); d.a(); }
輸出:
A.a()...
說明瞭:後面的類中的方法將前面的類中相同的方法覆蓋
我們再驗證三個類的情況:
新建類 C
class C{ void a(){ print("C.a()..."); } void b(){ print("C.b()..."); } void c(){ print("C.c()..."); } }
修改類D
// 類D 繼承A、B、C,A,C在前 ,B在最後 class D extends A with C,B{ }
再次執行
void main() {
var d = new D();
d.a();
}
輸出:
B.a()...
再次說明:後面的類中的方法將前面的類中相同的方法覆蓋。
綜上,Dart中使用Mixins,可以達到多繼承的效果,後面的類中的方法將前面的類中相同的方法覆蓋
Dart學習系列文章:https://www.cnblogs.com/jukaiit/category/1636484.html