Я изучаю Groovy, и я только что узнал о новой функции, добавленной в 2.3, которая является добавлением черт . Теперь мне кажется, что черты позволяют вам делать практически все, что может сделать суперкласс и интерфейс.
Делает ли добавление Traits в Groovy наследование и интерфейсы устаревшими?
А если нет, то в какое время лучше всего использовать каждый из этих механизмов?
interfaces
inheritance
groovy
Райан Стюлл
источник
источник
Ответы:
Черты сочетают в себе лучшее из обоих миров - наследование (абстрактных) классов и реализацию интерфейсов. Черта может содержать реализации методов по умолчанию, но тип может реализовывать несколько черт одновременно. Это допускает какое-то множественное наследование, но хорошим способом избежать смертельного алмаза смерти .
Если вы не знаете, как начать, то используйте черты. Вы получаете гибкость и можете при необходимости переключаться на интерфейсы или наследование классов.
источник