我想知道是否有办法在不破坏封装的情况下做到这一点,我希望抽象类依赖于实现子类中定义的参数。像这样:
public abstract class Parent {
private int size;
private List<String> someList;
public Parent() {
size = getSize();
someList = new ArrayList<String>(size);
}
public abstract int getSize();
}
public class Child extends Parent {
@Override
public int getSize() {
return 5;
}
}
这丑吗?有没有更好的办法?也许更重要的是,这甚至是一个好主意吗?
编辑:
这些类是在框架的上下文中创建的,因此默认的无参数构造函数始终是被调用的构造函数(实际上,Parent 类扩展了另一个类)。size 参数仅用于说明目的,我不打算将其用于 List 实现。