Kann eine anonyme Klasse in Java andere Methoden als seine Oberklasse haben? [Duplikat]

Dec 27 2020

Ich weiß, dass anonyme Klassen gut zum Überschreiben usw. geeignet sind, aber ich frage mich, ob Sie auch andere Methoden hinzufügen können, die in der übergeordneten Klasse nicht vorhanden sind, wie im folgenden Beispiel.

Dies ist meine Klasse mit wieBenIk als einzige Methode.

public class Driehoek {

//methoden
public void wieBenIk(){
    System.out.println("ik ben een driehoek");
}

}}

und hier ist meine anonyme Klasse, in der ich newMethod hinzugefügt habe.

öffentliche Klasse Main {

public static void main(String[] args) {

    Driehoek test = new Driehoek(){

        @Override
        public void wieBenIk() {
            System.out.println("overrided by anonymous class");
        }

        public void newMethod(){
            System.out.println("I am a new method");
        }
    };

    test.newMethod();

}

}}

Meine Frage ist, warum test.newMethod () nicht funktioniert. Ist es nicht eine Kinderklasse wie eine andere? Vielen Dank an alle, die mir geholfen haben.

Antworten

SJuan76 Dec 27 2020 at 05:44

Test wird als Instanz von Driehoek deklariert . Als solches wird es für den Compiler die Mitglieder von Driehoek geben .

Ebenso, wenn Sie definieren

Object test = new Driehoek() {....};

für den Compiler - Test wird nur die zur Verfügung stehende Objekte Mitglieder.

Wenn Sie der anonymen Klasse weitere Mitglieder hinzufügen, weiß der Compiler nicht, dass für den Test diese Methoden verfügbar sind. Sie können sie also nicht verwenden