수색…


소개

형질은 Groovy 언어의 구조적 생성 객체입니다. 특성은 인터페이스 구현을 가능하게합니다. 정적 유형 검사 및 컴파일과 호환됩니다. 특성은 기본 구현 및 상태의 인터페이스로 작동합니다. 특성의 선언은 특성 키워드를 사용하는 것입니다. ---------- 특성 메서드 범위는 publicprivate 메서드 만 지원합니다.

기본 사용법

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