2014-02-10 70 views
4

請問有人可以在Dart中寫關鍵字的一些正式定義嗎?「with」關鍵字在飛鏢

在官方飛鏢的例子,我只發現:

class TaskElement extends LIElement with Polymer, Observable { 

但我還是不明白究竟是什麼做的。

+1

AFAIK'Observable'是多餘的,如果您將'with Polymer'添加爲'Polymer'已經實現'Observable',但我也剛剛看到這個例子https://www.dartlang.org/polymer-dart/#extending -dom-elements具有「聚合物,可觀察」。我會盡力澄清。 –

+0

看來我錯了 - 請參閱@MatthewButler對此討論的回答:https://groups.google.com/a/dartlang.org/forum/#!topic/web/0d2tTlnYjew'用Polymer,Observable {'should使用。 –

回答

7

with關鍵字指示使用「mixin」。請參閱here

mixin是指將另一個或多個類的功能添加到自己的類中而不從這些類繼承的能力。現在可以在您的類上調用這些類的方法,並且這些類中的代碼將執行。 Dart沒有多重繼承,但是使用mixins可以摺疊其他類來實現代碼重用,同時避免多重繼承會導致的問題。

我注意到你已經回答了關於Java的一些問題 - 用Java術語來說,你可以將mixin想象成一個接口,它可以讓你不僅僅指定一個給定的類將包含給定的方法,而且還提供代碼爲那個方法。