Sök…


Introduktion

Egenskaper är konstruktionsobjekt på Groovy-språket. Funktioner möjliggör implementering av gränssnitt. De är kompatibla med statisk typkontroll och kompilering. Funktioner fungerar som gränssnitt med standardimplementeringar och tillstånd. Förklaring av ett drag är att använda drag- nyckelordet. ---------- Täckningsmetoder omfattar endast offentliga och privata metoder.

Grundläggande användning

En trait är en återanvändbar uppsättning metoder och fält som kan läggas till en eller flera klasser.

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

De kan användas som vanliga gränssnitt med hjälp av sökord för implements :

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

De kan också användas för att genomföra flera arv (att undvika diamantemission).

Hundar kan skrapa i huvudet, så:

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

Flera arvsproblem

Klassen kan implementera flera drag. Om en egenskap definierar metod med samma signatur som en annan egenskap, finns det ett problem med flera arv. I så fall används metoden från det senast deklarerade draget :

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow