ich hab mal ne frage zum thema abstrakte klassen und anonyme klassen.
von abstrakten klassen kann man ja keine objekte erzeugen. objekten werden mit new erzeugt.
anonyme klasse werden erzeugt indem ich mit new ein objekt erzeuge und hinter dem klassennamen eine geschweifte klammer öffne und dort eine neue methode implementiere
oder eine bereits bestehende methode der oberklasse überschreibe oder den anweisungblock einfach leer lasse.
WindowAdapter() ist eine abstrakte klasse also darf ich keine objekte von ihr erzeugen,
das heißt new WindowAdapter() ist verboten.
da ich aber hinter newWindowAdapter() einen block öffne, wird von der abstrakten klasse
WindowAdapter() eine anonyme Unterklasse gebildet. somit ist
new WindowAdapter(){} nicht die abstrakte klasse WindowAdapter() sondern die anonyme (nicht abstrakte) unterklasse von WindowAdapter(). weshalb ich jetzt auch ein Objekt davon erzeugen kann. seh ich das richtig?
f.addWindowListener ( new WindowAdapter(){
public void windowClosing (WindowEvent e) {System.exit(0);}
} );
von abstrakten klassen kann man ja keine objekte erzeugen. objekten werden mit new erzeugt.
anonyme klasse werden erzeugt indem ich mit new ein objekt erzeuge und hinter dem klassennamen eine geschweifte klammer öffne und dort eine neue methode implementiere
oder eine bereits bestehende methode der oberklasse überschreibe oder den anweisungblock einfach leer lasse.
WindowAdapter() ist eine abstrakte klasse also darf ich keine objekte von ihr erzeugen,
das heißt new WindowAdapter() ist verboten.
da ich aber hinter newWindowAdapter() einen block öffne, wird von der abstrakten klasse
WindowAdapter() eine anonyme Unterklasse gebildet. somit ist
new WindowAdapter(){} nicht die abstrakte klasse WindowAdapter() sondern die anonyme (nicht abstrakte) unterklasse von WindowAdapter(). weshalb ich jetzt auch ein Objekt davon erzeugen kann. seh ich das richtig?
f.addWindowListener ( new WindowAdapter(){
public void windowClosing (WindowEvent e) {System.exit(0);}
} );