Latest web development tutorials

Scala Trait (fonction)

Scala Trait (caractéristiques) interface Java équivalente, en fait, il est puissant que l'interface aussi.

L'interface est différente, il peut atteindre la définition des propriétés et des méthodes.

Dans des circonstances normales de classe Scala ne peut hériter d'un parent seul, mais si Trait (option), vous pouvez alors hériter multiples, à partir des résultats est de mettre en œuvre l'héritage multiple.

Informations Trait (option) est similaire à la définition de la classe, mais il utilise le mot - clétrait, comme suit:

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

Au- dessus de Trait (caractéristique) composée par deuxméthodes: isEqual et isNotEqual.méthode isEqual est pas définie par l'implémentation méthode, il isNotEqual définir les méthodes de. méthode sous-classes héritent des fonctionnalités peuvent être mises en œuvre ne sont pas mis en œuvre. Donc, en fait Scala Trait (option) comme Java classe abstraite.

Les exemples suivants illustrent les caractéristiques complètes:

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

Mise en œuvre du code ci-dessus, la sortie est:

$ scalac Test.scala 
$ scala Test
false
true
true

Caractéristiques de l'ordre de construction

Feature peut aussi avoir des constructeurs, et d'autres caractéristiques du corps par les déclarations du champ d'initialisation constitué. Ces déclarations à des objets mélangés dans la structure est caractérisée en seront exécutés.

L'ordre du constructeur d'exécution:

  • Appelez le constructeur de la superclasse;
  • constructeur Caractérisé après le constructeur superclasse, avant l'exécution du constructeur de la classe;
  • Trait est configuré de gauche à droite;
  • Chaque caractéristique entre le trait de parent a été construit;
  • Si plusieurs caractéristiques d'une structure caractéristiques des parents, parent trait ne sera pas répétée
  • Toutes les fonctions sont configurées sous-classe fini est construit.

Constructor est une séquence linéaire de classe inverse. Linéarisation est de décrire un type de tous les types de spécifications techniques super-aimables.