如何理解dart的mixin


mixin翻譯出來就是混入的意思

混入,就是一個類可以使用另一個類里的功能比如方法或者屬性,其實這個功能並不陌生 ,有點類似c#里的擴展方法,但是並不同於,

mixin和implements有着本質的區別,implements是實現,dart中任何類都有一個隱形的接口,都可以被其他類實現

但是混入卻有着限制,首先一個類如果定義了構造函數,哪怕是無參的,也是無法被別的類混入的,這在語法上就無法通過

因此一個類想被別的類混入,就無法聲明構造函數

[dart] The class 'Student1' can't be used as a mixin because it declares a constructor. [mixin_class_declares_constructor]

那么命名構造函數存在可以么?

也不可以,所以只要一個類包含了任何性質的構造函數,那么它就無法被別的類混入了

另外我們可以把一個類直接定義成混入類 並限制只能是繼承自Person的子類才可以混入,但是dart語法會提示person類必須滿足無名的構造函數,也就是說可以不定義構造函數,也可以定義一個無參的構造函數,或者是一個可重載的構造函數,dart中的重載采用的是{}

 mixin  Student1 on Person
{
  String name;
  int age;
  void test()
  {

  }
}

關於混入,這些是dart的語法,記住就可以了


免責聲明!

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



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