我想创建一个基类和一些子类。我想让基类知道子类创建了哪些对象。我尝试从子类的构造函数中调用基类的方法,如下:
class Base{
private ArrayList<Base> subClasses;
void addSubClassess(Base b){
subClasses.add(b);
}
void calculateSubClasses(){
System.out.println(subClasses.size());
}
}
class Sub extends Base{
Sub(){
super.addSubClassess(this);
}
}
public class Test{
public static void main(String[] args){
Sub s = new Sub();
Base b = new Base();
b.calculateSubClasses();
}
但是,上面的代码会抛出 NullPointerException。我知道这是因为调用方法“addSubClassess”实际上发生在创建子类之前。因此,该方法无法按预期工作。
那么有什么办法可以解决我的问题吗?这是一个例子来解释我到底想要什么?
有一个名为Shape的基类,它有很多子类,如Circle、Square、Triangle。形状类有一个方法名称“erase”来擦除形状,它被子类覆盖。类 Shape 有另一个私有方法名称“eraseAll”来擦除所有创建的形状。因此,如果我想调用“eraseAll”,我应该知道究竟创建了什么,然后一次删除它们。
我希望有一个人可以帮助我。非常感谢!