Dart語言學習(十三) Dart Mixins 實現多繼承


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM