[英]Understanding 'implements' and 'with' in Dart
我只是在閱讀Dart語言規范並探索一種新的有趣語言。 正如Dart語言規范所說 :Dart具有implicit interfaces
。 這意味着每個class
都是一個interface
。 所以,如果我想實現另一個類的某些行為,那么implements
子句是我唯一需要的。
此外,Dart支持mixins
。 這樣我們就可以使用with
keyword來實現另一個類的方法。
所以,假設一個抽象類A定義方法a(),如:
abstract class A {
void a();
}
另外兩個具體的類B定義方法a()但不實現類A:
class B {
void a() {
print("I am class B");
}
}
和C類用Mixin B實現A類,如:
class C extends Object with B implements A {
...
}
在這里,我對此幾乎沒有任何疑問。 如果一個類實現了接口,並且還使用了具有相同方法名稱的方法實現的mixin; 它不會使cycling inheritance
可能嗎? class C
的行為是什么? 是否需要實現a()
或者它將由mixin B
隱式實現?
我只是在學習Dart,像mixin這樣的概念對我來說非常陌生。 通過回答我的問題,任何人都可以幫助我理解嗎?
Mixins是一種有限的多重繼承。 使用C with B
, C
繼承void a()
。 添加implements A
不需要做任何其他事情,因為C
已經履行了它聲稱由implements A
實現的合同,因為B
您的鏈接是語言之旅 ,而不是規范 ,但巡演絕對是您應該閱讀的內容。
你的例子很好。 class C extends Object with B { ... }
基本上將B的成員添加到Object以創建C.如果C然后滿足接口A它可以聲明對該接口的支持( implements A
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.