scala: abstrakte Klassen Instanziierung?

8

Wie kommt es, dass ich eine abstrakte Klasse instanziiere?

%Vor%

Oder wird implizit eine konkrete Klasse erstellt? Und was bedeuten diese Klammern nach new A ?

    
zapadlo 18.03.2012, 21:14
quelle

4 Antworten

18

Damit erweitern Sie implizit A . Was Sie getan haben, ist syntaktischer Zucker, äquivalent zu diesem:

%Vor%

Mit diesen Klammern können Sie eine Klasse im laufenden Betrieb erweitern und eine neue anonyme Klasse erstellen, die den Wert a instanziiert und daher nicht mehr abstrakt ist.

    
Lanbo 18.03.2012, 21:17
quelle
5

Wenn Sie Java kennen, ist das ähnlich wie:

%Vor%

Aufgrund von Scalas einheitlichem Zugriff sieht es so aus, als ob Sie keine abstrakten Funktionen implementieren, Aber indem Sie a einen Wert geben, "konkretisieren" Sie die Klasse tatsächlich.

Mit anderen Worten, Sie erstellen eine Instanz einer konkreten Unterklasse von A , ohne der Unterklasse einen Namen zu geben (daher der Begriff "anonyme" Klasse).

    
aioobe 18.03.2012 21:16
quelle
3

Mit Scala können Sie nicht nur anonyme Funktionen, sondern auch anonyme Klassen erstellen.

Was Sie getan haben, ist ähnlich wie

%Vor%

aber ohne Anon name

    
om-nom-nom 18.03.2012 21:16
quelle
3

Sie instanziieren eine anonyme Klasse, die von A erbt und ihr abstraktes Element überlädt. Als Referenz finden Sie den Teil über anonyme Klasseninstanziationen in Eine Tour of Scala: Abstrakte Typen

    
Paolo Falabella 18.03.2012 21:17
quelle

Tags und Links