Groovy-특성
특성은 다음을 허용하는 언어의 구조적 구성입니다.
- 행동의 구성.
- 인터페이스의 런타임 구현.
- 정적 유형 검사 / 컴파일과의 호환성
기본 구현과 상태를 모두 전달하는 인터페이스로 볼 수 있습니다. 특성은 특성 키워드를 사용하여 정의됩니다.
특성의 예는 다음과 같습니다.
trait Marks {
void DisplayMarks() {
println("Display Marks");
}
}
그런 다음 implement 키워드를 사용하여 인터페이스와 유사한 방식으로 특성을 구현할 수 있습니다.
class Example {
static void main(String[] args) {
Student st = new Student();
st.StudentID = 1;
st.Marks1 = 10;
println(st.DisplayMarks());
}
}
trait Marks {
void DisplayMarks() {
println("Display Marks");
}
}
class Student implements Marks {
int StudentID
int Marks1;
}
인터페이스 구현
특성은 인터페이스를 구현할 수 있으며,이 경우 인터페이스는 implements 키워드를 사용하여 선언됩니다.
인터페이스를 구현하는 특성의 예는 다음과 같습니다. 다음 예에서 다음과 같은 핵심 사항을 확인할 수 있습니다.
Total 인터페이스는 DisplayTotal 메소드로 정의됩니다.
트레이 트 마크는 Total 인터페이스를 구현하므로 DisplayTotal 메서드에 대한 구현을 제공해야합니다.
class Example {
static void main(String[] args) {
Student st = new Student();
st.StudentID = 1;
st.Marks1 = 10;
println(st.DisplayMarks());
println(st.DisplayTotal());
}
}
interface Total {
void DisplayTotal()
}
trait Marks implements Total {
void DisplayMarks() {
println("Display Marks");
}
void DisplayTotal() {
println("Display Total");
}
}
class Student implements Marks {
int StudentID
int Marks1;
}
위 프로그램의 출력은 다음과 같습니다.
Display Marks
Display Total
속성
특성은 속성을 정의 할 수 있습니다. 속성이있는 특성의 예는 다음과 같습니다.
다음 예제에서 정수 유형의 Marks1은 속성입니다.
class Example {
static void main(String[] args) {
Student st = new Student();
st.StudentID = 1;
println(st.DisplayMarks());
println(st.DisplayTotal());
}
interface Total {
void DisplayTotal()
}
trait Marks implements Total {
int Marks1;
void DisplayMarks() {
this.Marks1 = 10;
println(this.Marks1);
}
void DisplayTotal() {
println("Display Total");
}
}
class Student implements Marks {
int StudentID
}
}
위 프로그램의 출력은 다음과 같습니다.
10
Display Total
행동의 구성
특성을 사용하여 제어 된 방식으로 다중 상속을 구현하여 다이아몬드 문제를 방지 할 수 있습니다. 다음 코드 예제에서는 두 가지 특성을 정의했습니다.Marks 과 Total. 우리 Student 클래스는 두 가지 특성을 모두 구현합니다. 학생 클래스는 두 가지 특성을 모두 확장하므로 두 가지 방법 모두에 액세스 할 수 있습니다.DisplayMarks 과 DisplayTotal.
class Example {
static void main(String[] args) {
Student st = new Student();
st.StudentID = 1;
println(st.DisplayMarks());
println(st.DisplayTotal());
}
}
trait Marks {
void DisplayMarks() {
println("Marks1");
}
}
trait Total {
void DisplayTotal() {
println("Total");
}
}
class Student implements Marks,Total {
int StudentID
}
위 프로그램의 출력은 다음과 같습니다.
Total
Marks1
특성 확장
특성은 다른 특성을 확장 할 수 있습니다.이 경우 extends예어. 다음 코드 예제에서는 Marks 트레이 트로 Total 트레이 트를 확장합니다.
class Example {
static void main(String[] args) {
Student st = new Student();
st.StudentID = 1;
println(st.DisplayMarks());
}
}
trait Marks {
void DisplayMarks() {
println("Marks1");
}
}
trait Total extends Marks {
void DisplayMarks() {
println("Total");
}
}
class Student implements Total {
int StudentID
}
위 프로그램의 출력은 다음과 같습니다.
Total