Как я могу получить доступ к этому методу анонимного класса в Java, и я получаю ошибку ниже. Что такое использование анонимных классов в Java? Можем ли мы сказать, что использование анонимного класса является одним из преимуществ java?
class Test1
{
public Test1()
{
System.out.println("Yes");
}
}
class Test extends Test1
{
public static void main(String []args) {
Test1 obj1= new Test1()
{
public void test1()
{
System.out.println("Yes A");
}
};
obj1.test1(); // here i am getting error
}
}
С ссылкой на родительский класс вы можете получить доступ только к способам, объявленным в родительском классе.
когда вы это делаете
Test1 obj1= new Test1(){
public void test1(){
System.out.println("Yes A");
}
};
obj1.test1(); // here i am getting error
вы создаете анонимный экземпляр class extending Test1
который ссылается на ссылку родительского типа.
поэтому метод test1() на самом деле является новым методом, который принадлежит расширяющемуся классу, а не переопределенному методу Test1, поэтому его нельзя называть с помощью obj1.
Когда я пытаюсь скомпилировать вашу программу, я получаю ошибку в строке obj1.test1();
поскольку метод test1() не определен для типа Test1.
Это можно решить, создав метод test1()
в классе Test1
.
class Test1 {
public Test1() {
System.out.println("Yes");
}
public void test1() {
}
}
Вы не можете получить к нему доступ таким образом. obj1
имеет тип Test1
и этот класс не имеет метода test1
.
ваш код является примером наследования, это не пример анонимного класса. Здесь Test1 obj1 = new Test1() вы создаете объект класса Test1 и пытаетесь вызвать метод test1() на этом объекте, так как метод test1() должен присутствовать в классе Test1.
И анонимный класс, который вы можете увидеть здесь
http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
Как анонимные (внутренние) классы используются в Java?
У вас нет анонимного класса.
У вас возникла ошибка, потому что вы пытаетесь вызвать метод test1()
не объявлен в классе Test1
и ваш экземпляр объекта obj1
класса Test1
.
Об анонимных классах читайте этот учебник.