ダーツの言語仕様を読んで興味深い新しい言語を探そうとしています。 As Dart language specification says:ダーツはimplicit interfaces
です。つまり、class
はすべてinterface
です。だから、私は別のクラスのいくつかの動作を実装したい場合は、implements
節だけが必要です。ダーツで 'implements'と 'with'を理解する
また、Dartはmixins
をサポートしています。そこで、with
というキーワードを使って別のクラスのメソッドを実装することができます。
したがって、与えられた抽象クラスAは、メソッドを定義する場合()のような:
abstract class A {
void a();
}
と別の2つの具象クラスBは、メソッドを()を定義しかしようなクラス実装しない:
class B {
void a() {
print("I am class B");
}
}
をここで
class C extends Object with B implements A {
...
}
、私はいくつかのquestioを持っている:
、クラスCは次のようにミックスインBでクラスAを実装しますそれについてのns。クラスがインタフェースを実装し、同じメソッド名を持つメソッド実装を持つmixinも使用する場合。 cycling inheritance
は可能になりませんか? class C
の動作はどのようになりますか? a()
を実装する必要がありますか、暗黙的にmixin B
によって実装されますか?
私はダーツを学んでいます。ミックスインのようなコンセプトは、私にはあまり知られていません。私の質問に答えて誰かに理解を助けることができますか?
あなたは気にしないで、あなたのサンプルを修正してください。Dart –
@ArgentiApparatusだから、with節を使ってmixinを使うと、そのクラスはオブジェクトを拡張することに制限されていますか?私はどこかでそれを読んだが、それを理解していなかった。あなたの編集について何か詳細を教えていただけますか? –
'class CはAとB {...}を実装しています。正しい構文は' class Classname extends Mixinclass extends Interface class {...} 'です。 *どんなクラスも拡張することができます。 mixinsとして使用できるクラスには制限があります。理解を深めるために、クラスの言語ツアーセクションを読むことをお勧めします –