Groovy - ลักษณะ
ลักษณะเป็นโครงสร้างโครงสร้างของภาษาที่อนุญาต -
- องค์ประกอบของพฤติกรรม
- การใช้งานอินเตอร์เฟสรันไทม์
- ความเข้ากันได้กับการตรวจสอบ / คอมไพล์ประเภทคงที่
สามารถมองเห็นได้ว่าเป็นอินเทอร์เฟซที่มีทั้งการใช้งานเริ่มต้นและสถานะ ลักษณะถูกกำหนดโดยใช้คำสำคัญลักษณะ
ตัวอย่างลักษณะได้รับด้านล่าง -
trait Marks {
void DisplayMarks() {
println("Display Marks");
}
}
จากนั้นเราสามารถใช้คีย์เวิร์ดที่ใช้เพื่อใช้คุณลักษณะในลักษณะเดียวกับอินเทอร์เฟซ
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
trait Marks ใช้อินเทอร์เฟซ 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 of type integer เป็นคุณสมบัติ
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. ชั้นเรียนนักเรียนของเราใช้ทั้งสองลักษณะ เนื่องจากชั้นเรียนของนักเรียนขยายทั้งสองลักษณะจึงสามารถเข้าถึงทั้งสองวิธี -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คำสำคัญ. ในตัวอย่างโค้ดต่อไปนี้เรากำลังขยาย Total trait ด้วย Marks trait
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