Eigenschaften, Vererbung und Schnittstellen in Groovy, wann sollten sie verwendet werden?

10

Ich lerne groovig und habe gerade etwas über die neue Funktion gelernt, die in 2.3 hinzugefügt wurde, nämlich das Hinzufügen von Eigenschaften . Jetzt scheint es mir, als ob Traits es Ihnen ermöglichen, im Grunde alles zu tun, was eine Superklasse und ein Interface können.

Macht das Hinzufügen von Merkmalen zu Groovy Vererbung und Schnittstellen überflüssig?

Und wenn nicht, wann ist dann der beste Zeitpunkt, um jeden dieser Mechanismen zu nutzen?

Ryan Stull
quelle
"groovy und ich habe gerade etwas über die neue Funktion in 2.3 erfahren, nämlich das Hinzufügen von Traits" - Traits wurden erstmals über ein AST-Addon namens Groovy ++ Booster zu Groovy vor 2.0 hinzugefügt (siehe code.google.com/p) / groovypptest / wiki / Traits
Vorg van Geir
Sie sollten die Dokumente über Merkmale wirklich lesen . Keine der hier gegebenen Antworten ist vollständig, ohne alles zu erwähnen, worüber diese Dokumente sprechen. Sie sollten besonders auf Abschnitte 13 - Ende
smac89

Antworten:

4

Merkmale kombinieren das Beste aus beiden Welten - die Vererbung von (abstrakten) Klassen und die Implementierung von Schnittstellen. Ein Merkmal kann Standardimplementierungen von Methoden enthalten, und dennoch kann ein Typ mehrere Merkmale gleichzeitig implementieren. Dies ermöglicht eine Art Mehrfachvererbung, aber auf eine gute Weise, um den tödlichen Diamanten des Todes zu vermeiden .

Wenn Sie nicht wissen, wie Sie anfangen sollen, verwenden Sie Merkmale. Sie gewinnen an Flexibilität und können bei Bedarf später zu Schnittstellen oder Klassenvererbung wechseln.

vier
quelle
3
In Schnittstellen können Sie die Standardmethode definieren. Was ist also der logische Unterschied?
Gilad Baruchian
Ich bin auch verwirrt mit dem Unterschied zwischen Merkmalen und Standardmethoden der Schnittstelle. Ich kann nur Züge in groovy annehmen früher eingeführt wurden als Standard - Methoden in Java
olyv
Ein Merkmal ermöglicht es Ihnen, reguläre Felder zu definieren, nicht nur statische Felder, da die Java-Schnittstelle Sie auf
smac89
Wenn Sie über Eigenschaften verwirrt sind, lesen Sie die Dokumente . Sie sind sehr informativ
smac89
1
@ smac89, danke, das war wirklich hilfreich!
Olyv