Mixins(混入功能)至關於多繼承,也就是說能夠繼承多個類,使用with關鍵字來實現Mixins的功能。html
那麼多個類中有相同的方法時候,會被覆蓋嗎?覆蓋的前後是什麼?學習
class A{ void a(){ print("A.a()..."); } } class B{ void a(){ print("B.a()..."); } void b(){ print("B.b()..."); } }
如今新建一個類D,使得D繼承A和Bspa
// 類D 繼承A和B class D extends A with B{ }
執行:code
void main() { var d = new D(); d.a(); }
輸出:htm
B.a()...
若是咱們改變A 和B 順序,以下blog
// 類D 繼承A和B,B在前A在後 class D extends B with A{ }
再次執行繼承
void main() { var d = new D(); d.a(); }
輸出:get
A.a()...
說明了:後面的類中的方法將前面的類中相同的方法覆蓋it
咱們再驗證三個類的狀況:class
新建類 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