abstract class A {
public void disp() {
System.out.print("Abstract");
}
}
public class B {
public static void main(String args[]) {
A object = new A(){ };
object.disp();
}
}
我知道抽象类不能实例化,但对这段代码感到困惑。
这段代码究竟是什么意思?
这里的微妙之处在于“{}”。这意味着您显式为抽象类 A
的缺失部分(缺失部分是抽象方法)提供匿名实现,允许您实例化它。
但是A
中没有抽象方法,因此匿名实现是空的。
用至少一个抽象方法展示行为的例子:
public abstract class A {
public abstract void bar();
public void disp() { System.out.print("Abstract"); }
}
public class B {
public static void main(String args[]) {
A object = new A() {
@Override public void bar() { System.out.print("bar"); }
};
object.disp(); //prints "Abstract"
object.bar(); //prints "bar"
}
}