抽象类:
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();
}
}
我创建了一个父类抽象类和一个继承父类的子类。
父类抽象类持有对自己实例的引用,并通过静态方法返回该实例。
在测试类中,如果我不创建ChildClass的对象,Java会抛出NullPointerException。
但是,在创建ChildClass对象后,并查询ParentClass实例并调用抽象方法时,它会调用由ChildClass实现的方法。
我无法理解这种行为。请问有人能够解释一下吗?