Uma classe anônima em Java pode ter outros métodos além de sua superclasse? [duplicado]
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
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