【发布时间】:2015-08-21 12:21:04
【问题描述】:
抽象类:
public abstract class ParentClass {
private static ParentClass mpParentClass;
public ParentClass() {
mpParentClass = this;
}
public abstract void method1();
public static ParentClass getInstance() {
return mpParentClass;
}
}
儿童班:
public class ChildClass extends ParentClass{
@Override
public void method1() {
System.out.print("ChildClass class method");
}
}
测试类:
public class TestClass {
public static void main(String[] args) {
ChildClass cl = new ChildClass();
ParentClass.getInstance().method1();
}
}
在这里,我创建了一个抽象类和一个扩展父抽象类的子类。
父抽象类持有对其自身实例的引用,并通过静态方法返回该实例。
在Test类中,如果我不创建ChildClass的对象,java会抛出NullPointerException。
但是在创建了 ChildClass 的对象之后,然后查询 ParentClass 的实例并调用抽象方法,它调用了 ChildClass 实现的方法。
我无法理解这种行为。请任何人解释。
【问题讨论】:
标签: java oop inheritance abstract-class abstract