Latest web development tutorials

Scala Trait (fitur)

Scala Trait (karakteristik) antarmuka Java setara, pada kenyataannya, itu adalah kuat daripada antarmuka juga.

antarmuka yang berbeda, dapat mencapai definisi dari properti dan metode.

Dalam keadaan normal kelas Scala hanya dapat mewarisi orang tua tunggal, tetapi jika Trait (fitur), maka Anda dapat mewarisi beberapa, dari hasil adalah dengan menerapkan beberapa warisan.

Informasi Trait (fitur) mirip dengan definisi kelas, tetapi menggunakansifat kata kunci,sebagai berikut:

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

Atas Trait (karakteristik) disusun oleh duametode: isEqual dan isNotEqual.Metode isEqual tidak pelaksanaan yang ditetapkan metode, itu isNotEqual menentukan metode. Metode subclass mewarisi fitur dapat diimplementasikan tidak dilaksanakan. Jadi sebenarnya Scala Trait (fitur) seperti kelas abstrak Java.

Contoh berikut menunjukkan fitur lengkap:

/* 文件名: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))
   }
}

Pelaksanaan kode di atas, output adalah:

$ scalac Test.scala 
$ scala Test
false
true
true

Karakteristik rangka konstruksi

Fitur juga dapat memiliki konstruktor, dan fitur lain dari tubuh dengan pernyataan inisialisasi lapangan merupakan. Pernyataan-pernyataan ini setiap benda dicampur ke dalam struktur dicirikan akan dieksekusi.

Eksekusi urutan konstruktor:

  • Memanggil konstruktor dari superclass;
  • konstruktor ditandai setelah konstruktor superclass, sebelum pelaksanaan kelas konstruktor;
  • Sifat dikonfigurasi dari kiri ke kanan;
  • Setiap fitur antara sifat orang tua pertama kali dibangun;
  • Jika ada beberapa fitur struktur karakteristik orang tua, orang tua sifat tidak akan terulang
  • Semua fitur dikonfigurasi subclass selesai dibangun.

Konstruktor adalah urutan linear kelas terbalik. Linierisasi adalah untuk menggambarkan jenis semua jenis spesifikasi teknis super-jenis.