Latest web development tutorials

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.w3big.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 สำเร็จรูปมีการก่อสร้าง

คอนสตรัคเป็นลำดับเชิงเส้นของชั้นกลับ เชิงเส้นคือการอธิบายประเภทของทุกประเภทของข้อกำหนดทางเทคนิคซุปเปอร์ชนิด