如何在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
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
您无法以这种方式访问它。 obj1
的类型为Test1
,此类没有test1
方法。
答案 2 :(得分:0)
当我尝试编译您的程序时,我在第obj1.test1();
行收到错误方法test1()未定义类型Test1 。
您可以通过在test1()
类中创建Test1
方法来解决此问题。
class Test1 {
public Test1() {
System.out.println("Yes");
}
public void test1() {
}
}
答案 3 :(得分:0)
使用父类引用,您只能访问父类中声明的方法。
当你做的时候
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调用它。
答案 4 :(得分:0)
您的代码是继承的示例,它不是匿名类的示例。 这里Test1 obj1 = new Test1()你正在创建Test1类的对象并试图在该对象上调用方法test1(),这意味着test1()方法应该出现在Test1类中。
你可以在这里看到匿名课
http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
How are Anonymous (inner) classes used in Java?