Scala Trait (funzione)
Scala Trait (caratteristiche) interfaccia Java equivalente, infatti, è potente rispetto l'interfaccia anche.
L'interfaccia è differente, può raggiungere la definizione delle proprietà e metodi.
In circostanze normali classe Scala può ereditare un solo genitore, ma se Trait (funzione), allora si può ereditare multipla, dai risultati è quello di implementare l'ereditarietà multipla.
Informazioni Trait (caratteristica) è simile alla definizione della classe, ma utilizza la parolatratto, come segue:
trait Equal { def isEqual(x: Any): Boolean def isNotEqual(x: Any): Boolean = !isEqual(x) }
Sopra Trait (caratteristica) composto da duemetodi: IsEqual e isNotEqual.Metodo IsEqual non è definito dall'implementazione metodo, isNotEqual definire le modalità di. Metodo sottoclassi ereditano le caratteristiche possono essere implementate non è implementata. Quindi, in realtà Scala Trait (funzione) come Java classe astratta.
I seguenti esempi dimostrano le caratteristiche complete:
/* 文件名: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)) } }
L'attuazione del codice di cui sopra, l'output è:
$ scalac Test.scala $ scala Test false true true
Caratteristiche di ordine di costruzione
Feature può anche avere i costruttori, e altre caratteristiche del corpo dalle dichiarazioni del campo di inizializzazione costituito. verranno eseguite Queste dichiarazioni a oggetti mescolati nella struttura è caratterizzata.
L'ordine di esecuzione del costruttore:
- Chiamare il costruttore della superclasse;
- costruttore caratterizzato dopo la costruzione della superclasse, prima dell'esecuzione costruttore di classe;
- Trait è configurato da sinistra a destra;
- Ogni funzione tra il tratto genitore è stato costruito prima;
- Se ci sono più le caratteristiche di una struttura caratteristiche genitore, tratto genitore non si ripeterà
- Tutte le funzioni sono configurate sottoclasse finito viene costruito.
Costruttore è una sequenza lineare di classe inversa. Linearizzazione è quello di descrivere un tipo di tutti i tipi di specifiche tecniche super-gentile.