2012-03-18 16 views

Respuesta

18

Con esto, extiende implícitamente A. Lo que has hecho es el azúcar sintáctica, lo que equivale a esto:

class A' extends A { 
    val a = 3 
} 
val a = new A' 

Estos soportes simplemente le permiten ampliar una clase sobre la marcha, la creación de una nueva clase anónima, que ejemplariza el valor a y por lo tanto no es abstracto más.

5

Si conoces Java, esto es similar a:

new SomeAbstractClass() { 
    // possible necessary implementation 
} 

Debido a Scalas uniform access parece que no va a implementar las funciones abstractas, sino simplemente dando a un valor, que realmente hacen "concretesize " la clase.

En otras palabras, está creando una instancia de una subclase concreta de A sin dar un nombre a la subclase (por lo tanto, el término clase "anónimo").

3

Scala le permite crear no solo funciones anónimas sino también clases anónimas.

Lo que han hecho es simular a

class Anon extends A { 
    val a = 3 
} 

pero sin Anon nombre

3

que estés crear instancias de una clase anónima que hereda de A y sobrecarga a un miembro de su abstracta. Para referencia, consulte la parte sobre instancias de clases anónimas en A Tour of Scala: Abstract Types

Cuestiones relacionadas