Latest web development tutorials

Scala Rasgo (función)

Scala Rasgo (características) interfaz Java equivalente, de hecho, es potente que la interfaz también.

La interfaz es diferente, se puede lograr la definición de las propiedades y métodos.

En circunstancias normales Scala clase sólo puede heredar un solo padre, pero si Rasgo (función), entonces usted puede heredar múltiples, a partir de los resultados es implementar la herencia múltiple.

Información Trait (función) es similar a la definición de la clase, pero utiliza la palabra claverasgo, como sigue:

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

Por encima de Rasgo (característica) compuesta por dosmétodos: ISEQUAL y isNotEqual.ISEQUAL método no es el método definido por la implementación, se isNotEqual definir los métodos de. no se ha implementado el método subclases heredan las características se pueden implementar. Así que de hecho Scala Rasgo (función) como clase abstracta de Java.

Los siguientes ejemplos demuestran las características completas:

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

Aplicación del código anterior, la salida es:

$ scalac Test.scala 
$ scala Test
false
true
true

Las características de construcción fin

Función también puede tener constructores, y otras características del cuerpo por las declaraciones de la inicialización de campo constituido. se ejecutarán estas declaraciones en los objetos mezclados en la estructura se caracteriza.

La orden de ejecución del constructor:

  • Llamar al constructor de la superclase;
  • caracterizado constructor después de que el constructor de la superclase, antes de la ejecución constructor de la clase;
  • Rasgo está configurado de izquierda a derecha;
  • se construyó cada característica entre el rasgo de los padres;
  • Si hay varias características de una estructura de características de los padres, progenitor de rasgo no se repetirá
  • Todas las funciones se configuran subclase acabado se construye.

Constructor es una secuencia lineal de clase inversa. Linealización es para describir un tipo de todo tipo de especificaciones técnicas súper amables.