Поиск…
Вступление
Черты являются объектами структурного строительства на языке Groovy. Черты позволяют реализовать интерфейсы. Они совместимы со статическим типом проверки и компиляции. Черты ведут себя как интерфейсы с реализацией по умолчанию и состоянием. Декларация признака заключается в использовании ключевого слова trait . ---------- Область методов методов поддерживает только публичные и частные методы.
Основное использование
trait
является многоразовым набором методов и полей , которые могут быть добавлены к одному или нескольким классам.
trait BarkingAbility {
String bark(){ "I'm barking!!" }
}
Они могут быть использованы как обычные интерфейсы, используя implements
ключевое слово:
class Dog implements BarkingAbility {}
def d = new Dog()
assert d.bark() = "I'm barking!!"
Также они могут использоваться для реализации множественного наследования (исключая проблему с алмазами).
Собаки могут поцарапать ему голову, так что:
trait ScratchingAbility {
String scratch() { "I'm scratching my head!!" }
}
class Dog implements BarkingAbility, ScratchingAbility {}
def d = new Dog()
assert d.bark() = "I'm barking!!"
assert d.scratch() = "I'm scratching my head!!"
Проблема множественного наследования
Класс может реализовывать несколько признаков. В случае, если один признак определяет метод с той же сигнатурой, что и другой признак, существует проблема множественного наследования. В этом случае используется метод из последнего объявленного признака :
trait Foo {
def hello() {'Foo'}
}
trait Bar {
def hello() {'Bar'}
}
class FooBar implements Foo, Bar {}
assert new FooBar().hello() == 'Bar'
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow