Sifat Scala(ciri)


Scala Trait (ciri) adalah setara dengan antara muka Java Malah, ia lebih berkuasa daripada antara muka.

Tidak seperti antara muka, ia juga boleh menentukan pelaksanaan sifat dan kaedah.

Secara amnya, kelas Scala hanya boleh mewarisi kelas induk tunggal, tetapi jika ia merupakan Ciri (ciri), ia boleh mewarisi berbilang daripada hasilnya, berbilang warisan dicapai.

Trait (ciri) ditakrifkan dengan cara yang serupa dengan kelas, tetapi kata kunci yang digunakan ialah trait, seperti ditunjukkan di bawah:

trait Equal {
  def isEqual(x: Any): Boolean
  def isNotEqual(x: Any): Boolean = !isEqual(x)
}

Tret di atas (ciri ) terdiri daripada dua Ia terdiri daripada dua kaedah: isEqual dan isNotEqual. Kaedah isEqual tidak mentakrifkan pelaksanaan kaedah, dan isNotEqual mentakrifkan pelaksanaan kaedah. Subkelas mewarisi sifat untuk melaksanakan kaedah yang tidak dilaksanakan. Jadi sebenarnya, Scala Trait (ciri) lebih seperti kelas abstrak Java.

Yang berikut menunjukkan contoh lengkap ciri:

/* 文件名:Test.scala
 * author:php中文网
 * url:www.php.cn
 */
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))
   }
}

Laksanakan kod di atas, hasil output ialah:

$ scalac Test.scala 
$ scala Test
false
true
true

Tertib pembinaan ciri

Ciri juga Boleh ada pembina, yang terdiri daripada pemulaan medan dan pernyataan lain dalam badan ciri. Pernyataan ini akan dilaksanakan semasa pembinaan mana-mana objek yang bercampur dengan sifat ini.

Arahan pelaksanaan pembina:

  • Panggil pembina kelas super; kelas super dilaksanakan selepas pembina dan sebelum pembina kelas;

  • ciri dibina dari kiri ke kanan; sifat induk dibina dahulu Pembinaan;

  • Jika berbilang ciri berkongsi ciri induk, sifat induk tidak akan dibina berulang kali

  • Semua ciri adalah dibina, dan subkelas dibina.

  • Tertib pembina ialah kebalikan daripada linearisasi kelas. Linearisasi ialah spesifikasi teknikal yang menerangkan semua superjenis sesuatu jenis.