Черты, Наследование и Интерфейсы в Groovy, когда их использовать?

10

Я изучаю Groovy, и я только что узнал о новой функции, добавленной в 2.3, которая является добавлением черт . Теперь мне кажется, что черты позволяют вам делать практически все, что может сделать суперкласс и интерфейс.

Делает ли добавление Traits в Groovy наследование и интерфейсы устаревшими?

А если нет, то в какое время лучше всего использовать каждый из этих механизмов?

Райан Стюлл
источник
1
stackoverflow.com/q/23121890
Роберт Харви
"groovy, и я только что узнал о новой функции, добавленной в 2.3, которая является добавлением черт" - черты были впервые добавлены в Groovy до 2.0 через AST-аддон, называемый усилителем Groovy ++, см. code.google.com/p / groovypptest / wiki / Черты
Ворг ван Гейр
Вы должны действительно прочитать документы о чертах. Ни один из приведенных здесь ответов не будет полным без упоминания всего, о чем говорят эти документы; Особенно следует обратить внимание на разделы 13 - конец
smac89

Ответы:

4

Черты сочетают в себе лучшее из обоих миров - наследование (абстрактных) классов и реализацию интерфейсов. Черта может содержать реализации методов по умолчанию, но тип может реализовывать несколько черт одновременно. Это допускает какое-то множественное наследование, но хорошим способом избежать смертельного алмаза смерти .

Если вы не знаете, как начать, то используйте черты. Вы получаете гибкость и можете при необходимости переключаться на интерфейсы или наследование классов.

fxfour
источник
3
В интерфейсах вы можете определить метод по умолчанию, так в чем же логическая разница?
Гилад
меня также смущает разница между чертами и методами интерфейса по умолчанию. Я могу только предположить, что черты в groovy были введены раньше, чем стандартные методы в java
olyv
Черта позволяет вам определять обычные поля, а не только статические поля, так как интерфейс java ограничивает вас
smac89
Если вы не уверены в чертах характера, прочитайте документы . Они очень информативны
smac89
1
@ smac89, спасибо, это было действительно полезно!
Олив