¿Puede una clase anónima en Java tener otros métodos además de su superclase? [duplicar]

Dec 27 2020

Sé que las clases anónimas son buenas para anular, etc., pero me pregunto si también puede agregar otros métodos que no existen en la clase principal, como en el ejemplo siguiente.

Esta es mi clase con wieBenIk como único método.

public class Driehoek {

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

}

y aquí está mi clase anónima donde agregué newMethod.

public class 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();

}

}

Mi pregunta es ¿por qué test.newMethod () no funciona? ¿No es una clase infantil como otra? Gracias a todos por ayudarme.

Respuestas

SJuan76 Dec 27 2020 at 05:44

test se declara como una instancia de Driehoek . Como tal, para el compilador tendrá los miembros de Driehoek .

Del mismo modo, si define

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

para la prueba del compilador solo tendrán disponibles los miembros Object .

Si agrega más miembros a la clase anónima, el compilador no sabrá que la prueba tiene esos métodos disponibles. Entonces no te permite usarlos