我剛剛閱讀了Dart語言規範並探索了一種新的有趣的語言。 As Dart language specification says:飛鏢有implicit interfaces
。這意味着每個class
也是interface
。所以,如果我想實現另一個類的某些行爲,implements
子句是我唯一需要的。飛鏢中理解'實現'和'與'
另外,Dart支持mixins
。這樣我們就可以使用with
關鍵字從另一個類實現方法。
因此,考慮到如果一個抽象類A定義的方法A(),如:
abstract class A {
void a();
}
和另外兩個具體類B定義方法的(),但不實現類A等:
class B {
void a() {
print("I am class B");
}
}
類和C類實現A類與密新b類似:
class C extends Object with B implements A {
...
}
在這裏,我有幾個questio恩關於它。如果一個類實現了接口,並且使用具有相同方法名的方法實現的mixin;這不會使cycling inheritance
成爲可能嗎? class C
會怎樣?它是否需要執行a()
或者它將由mixin B
隱含實施?
我只是學習飛鏢和像mixin這樣的概念對我來說很陌生。任何人都可以通過回答我的問題來幫助我理解嗎?
希望你不介意,但修正你的樣本是否正確Dart –
@ArgentiApparatus那麼,如果我使用mixin使用with子句是那個類限制擴展Object?我在某處讀過它,但沒有明白。你能否詳細說明一下你的編輯? –
您編寫了'class C implements B with B {...}'正確的語法是'class Classname extends Mixinclass implements Interface {...}'擴展Baseclass。 *任何*課程可能會延長。雖然可以用作mixin的類有一些限制。我建議閱讀關於課程的語言遊覽部分以便更好地理解 –