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的語法,記住就可以了