Latest web development tutorials

Scala Trait (Feature)

Scala Trait (Eigenschaften) äquivalent Java-Schnittstelle, in der Tat ist es leistungsstärker als die Schnittstelle auch.

Die Schnittstelle unterscheidet, kann er die Definition der Eigenschaften und Methoden erreichen.

Unter normalen Umständen kann nur Scala Klasse ein einzelnes Elternteil erben, aber wenn Trait (Funktion), dann können Sie mehrere erben, aus den Ergebnissen ist die Mehrfachvererbung zu implementieren.

Informationen Trait (Feature) ist ähnlich wie die Definition der Klasse, aber es nutzt das StichwortMerkmal, wie folgt:

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

Oberhalb Trait (Merkmal) durch zweiVerfahren zusammen: isEqual und isNotEqual.isEqual Methode ist nicht die Implementierung definiert Verfahren, isNotEqual es die Methoden der definieren. Subklassen erben können die Merkmale implementiert werden Verfahren nicht implementiert. So in der Tat Scala Trait (Feature) wie Java abstrakte Klasse.

Die folgenden Beispiele zeigen die kompletten Merkmale:

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

Die Umsetzung des obigen Codes ist die Ausgabe:

$ scalac Test.scala 
$ scala Test
false
true
true

Merkmale der Bauauftrag

Funktion kann auch Konstrukteure haben und andere Funktionen des Körpers durch die Initialisierungsfeldrichtung Aussagen gebildet. Diese Aussagen an irgendwelchen Gegenständen in die Struktur gemischt ist dadurch gekennzeichnet, wird ausgeführt.

Die Ausführungsreihenfolge der Baumeister:

  • Rufen Sie den Konstruktor der übergeordneten Klasse;
  • Gekennzeichnet Konstruktor nach dem Oberklassenkonstruktors, vor der Klasse Konstruktor Ausführung;
  • Trait wird von links nach rechts konfiguriert;
  • Jedes Merkmal, unter dem übergeordneten Merkmal wurde zuerst konstruiert;
  • Wenn es mehrere Funktionen, die ein Elternteil Merkmale, Eltern Merkmal wird nicht wiederholt Struktur werden
  • Alle Funktionen sind so konfiguriert, fertigen Unterklasse aufgebaut ist.

Constructor ist eine lineare Abfolge von Reverse-Klasse. Linearisierungs ist eine Art aller Arten von Super-Art technische Spezifikationen zu beschreiben.