关于内部匿名类,我发现一个很奇怪的现象,它不能直接放在成员位置上,必须放在方法内,否则编译会失败!!!内部匿名类不是相当于匿名子类对象吗,怎么不能放在成员位置上,例如下面的例子
abstract class Person
{
abstract void show();
}
class out
{
int x=4;
void function()
{
System.out.println("x="+x);
}
new Person()
{
void show()
{
System.out.println("我是匿名子类对象");
}
void back()
{
}
}.show();
}
class Demo
{
public static void main(String[] args)
{
out o=new out();
o.function();
}
}
红色部分是匿名内部类,为什么编译通不过?而把它放在放在方法内时就会编译通过啊??例如下面的例子:
abstract class Person
{
abstract void show();
}
class out
{
int x=4;
void function()
{
System.out.println("x="+x);
}
public void function1()
{
new Person()
{
void show()
{
System.out.println("我是匿名子类对象");
}
void back()
{
}
}.show();
}
}
class Demo
{
public static void main(String[] args)
{
out o=new out();
o.function();
o.function1() ;
}
}
|