Scala Trait (คุณสมบัติ)
Scala ลักษณะ (ลักษณะ) เทียบเท่าอินเตอร์เฟซ Java ในความเป็นจริงจะมีประสิทธิภาพกว่าอินเตอร์เฟซยัง
อินเตอร์เฟซที่แตกต่างกันก็สามารถบรรลุความหมายของคุณสมบัติและวิธีการที่
ภายใต้สถานการณ์ปกติระดับสกาล่าเท่านั้นที่สามารถสืบทอดผู้ปกครองคนเดียว แต่ถ้าลักษณะ (คุณลักษณะ) แล้วคุณสามารถสืบทอดหลายจากผลลัพธ์คือการใช้มรดกหลาย
ข้อมูลลักษณะ (คุณลักษณะ) จะคล้ายกับความหมายของการเรียนแต่จะใช้ลักษณะคำหลักดังต่อไปนี้:
trait Equal { def isEqual(x: Any): Boolean def isNotEqual(x: Any): Boolean = !isEqual(x) }
ดังกล่าวข้างต้นลักษณะ (ลักษณะ)ประกอบไปด้วยสองวิธี: IsEqual และ isNotEqualวิธี IsEqual ไม่ได้ดำเนินการกำหนดวิธีการก็ isNotEqual กำหนดวิธีของ subclasses สืบทอดคุณสมบัติที่สามารถดำเนินการวิธีการที่ไม่ได้ดำเนินการ ดังนั้นในความเป็นจริง Scala Trait (คุณลักษณะ) เช่นระดับนามธรรม Java
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงคุณสมบัติที่สมบูรณ์แบบ:
/* 文件名:Test.scala * author:本教程 * url:www.w3write.com */ trait Equal { def isEqual(x: Any): Boolean def isNotEqual(x: Any): Boolean = !isEqual(x) } class Point(xc: Int, yc: Int) extends Equal { var x: Int = xc var y: Int = yc def isEqual(obj: Any) = obj.isInstanceOf[Point] && obj.asInstanceOf[Point].x == x } object Test { def main(args: Array[String]) { val p1 = new Point(2, 3) val p2 = new Point(2, 4) val p3 = new Point(3, 3) println(p1.isNotEqual(p2)) println(p1.isNotEqual(p3)) println(p1.isNotEqual(2)) } }
การดำเนินงานของโค้ดข้างต้นผลลัพธ์คือ:
$ scalac Test.scala $ scala Test false true true
ลักษณะของการสั่งซื้อการก่อสร้าง
คุณลักษณะยังสามารถมีการก่อสร้างและคุณสมบัติอื่น ๆ ของร่างกายโดยงบฟิลด์เริ่มต้นที่ประกอบด้วย งบเหล่านี้ที่วัตถุใด ๆ ผสมลงในโครงสร้างเป็นลักษณะในการจะดำเนินการ
ลำดับการดำเนินการสร้าง:
- เรียก constructor ของ superclass นั้น
- คอนสตรัคโดดเด่นหลังจากนวกรรมิก superclass ก่อนที่จะดำเนินการสร้างชั้น;
- ลักษณะมีการกำหนดค่าจากซ้ายไปขวา;
- คุณลักษณะในหมู่ลักษณะปกครองแต่ละคนเป็นครั้งแรกที่สร้างขึ้น;
- หากมีคุณสมบัติหลายลักษณะโครงสร้างผู้ปกครองลักษณะที่ผู้ปกครองจะไม่ซ้ำ
- คุณสมบัติทั้งหมดมีการกำหนดค่า subclass สำเร็จรูปมีการก่อสร้าง
คอนสตรัคเป็นลำดับเชิงเส้นของชั้นกลับ เชิงเส้นคือการอธิบายประเภทของทุกประเภทของข้อกำหนดทางเทคนิคซุปเปอร์ชนิด