本帖最后由 王红霞 于 2012-7-12 14:20 编辑
abstract class AbsDemo
{
abstract void show();
}
class Outer
{
int x=3;
public void function()
{
//情况1
AbsDemo d=new AbsDemo() //d是抽象类的对象 而不是抽象类的子类
{
int num=3;
void show()
{
System.out.println("num="+num);
}
void abc()
{
System.out.println("hello");
}
};
d.show();
d.abc(); //因为abc()不是抽象类Abstract的内部函数,所以编译失败
//情况2
new AbsDemo() //这是匿名内部类的代码块 创建的是抽象类的子类
{
int num=3;
void show()
{
System.out.println("num="+num);
}
void abc() //1,在子类中定义了abc()方法 属于内部方法
{
System.out.println("hello");
}
}.abc(); //2,所以在此处可以调用,编译成功
}
}
class InnerClassDemo4
{
public static void main(String[] args)
{
new Outer().function();
}
}
|