Может ли анонимный класс в Java иметь другие методы, кроме его суперкласса? [дубликат]
Я знаю, что анонимные классы хороши для переопределения и так далее, но мне интересно, можете ли вы также добавить другие методы, которых нет в родительском классе, как в примере ниже.
Это мой класс с wieBenIk в качестве единственного метода.
public class Driehoek {
//methoden
public void wieBenIk(){
System.out.println("ik ben een driehoek");
}
}
и вот мой анонимный класс, в который я добавил 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();
}
}
У меня вопрос: почему test.newMethod () не работает? Разве этот дочерний класс не похож на другой? Спасибо всем за помощь.
Ответы
test объявлен как экземпляр Driehoek . Таким образом, для компилятора у него будут члены Driehoek .
Точно так же, если вы определите
Object test = new Driehoek() {....};
для теста компилятора будут доступны только члены Object .
Если вы добавите больше членов в анонимный класс, компилятор не узнает, что у теста есть эти методы. Значит, это не позволяет вам их использовать