delegateを入れました。
delegateを入れました。
class ClassA {
def initialize() {
}
def show() {
println("HELLO delegate");
}
}
class ClassB {
field: delegate ClassA;
def initialize() {
self.field = new ClassA();
}
}
a:ClassB = new ClassB();
a.show();
みたいな感じです。
また詳しくwikiに書きます。移譲は継承の代わりにもなります。
Clover2には継承はありませんが、移譲が代わりとなってくれるでしょう。
def showはClassBで定義されているのでインターフェースにも代入できます。
移譲のメソッドが衝突した場合は後にdelegate指定したフィールドが優先されます。もし先に定義したフィールドを優先したい場合はそのようなメソッドを定義すれば、そちらが優先されます。
これは誰の真似でもなくて僕自身のアイデアです。もう、そのような機能を入れた言語はあるかもしれませんが。
継承に対する重要な切り札です。継承は悪です。移譲こそ、継承より上の概念です。
それでは。
enjoy programing!