Recherche…


Introduction

Les traits sont des objets de construction structurels dans le langage Groovy. Les traits permettent l'implémentation des interfaces. Ils sont compatibles avec la vérification de type statique et la compilation. Les traits se comportent comme des interfaces avec des implémentations et des états par défaut. La déclaration d'un trait est en utilisant le mot-clé trait . ---------- La portée des méthodes de caractères ne prend en charge que les méthodes publiques et privées .

Utilisation de base

Un trait est un ensemble réutilisable de méthodes et de champs pouvant être ajoutés à une ou plusieurs classes.

trait BarkingAbility {
    String bark(){ "I'm barking!!" }
}

Ils peuvent être utilisés comme des interfaces normales, en utilisant le mot-clé implements :

class Dog implements BarkingAbility {}
def d = new Dog()
assert d.bark() = "I'm barking!!"

Ils peuvent également être utilisés pour mettre en œuvre l'héritage multiple (en évitant la question du diamant).

Les chiens peuvent se gratter la tête, alors:

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!!"

Problème d'héritage multiple

La classe peut implémenter plusieurs traits. Si un trait définit une méthode avec la même signature comme un autre trait, il y a un problème d'héritage multiple. Dans ce cas, la méthode du dernier trait déclaré est utilisée:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow