簡體   English   中英

在Dart中理解'implements'和'with'

[英]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 BC繼承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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM