Uma classe anônima em Java pode ter outros métodos além de sua superclasse? [duplicado]

Dec 27 2020

Eu sei que classes anônimas são boas para substituir e assim por diante, mas eu me pergunto se você também pode adicionar outros métodos que não existem na classe pai, como no exemplo abaixo.

Esta é a minha aula com wieBenIk como único método.

public class Driehoek {

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

}

e aqui está minha classe anônima onde adicionei 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();

}

}

Minha pergunta é por que test.newMethod () não está funcionando? Não é uma aula infantil como outra? Obrigado a todos por me ajudar.

Respostas

SJuan76 Dec 27 2020 at 05:44

test é declarado como uma instância de Driehoek . Como tal, para o compilador terá os membros de Driehoek .

Da mesma forma, se você definir

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

para o teste do compilador só terá disponíveis os membros Object .

Se você adicionar mais membros à classe anônima, o compilador não saberá que o teste tem esses métodos disponíveis. Portanto, não permite que você os use