【发布时间】:2018-12-10 05:07:22
【问题描述】:
假设我正在编写一个包。我的包中有以下继承层次结构:
public class Container {
public void size() {
System.out.println(10);
}
}
public final class Bucket extends Container {}
public final class Bag extends Container {}
public class Item {
Container container; // is aware of what container it's in. Will be initialized on construction.
public Container getContainer() {
return container;
}
}
我想阻止其他人继承Container。但我无法做到final,因为Bucket 和Bag 是子类。而且我必须做到public,否则外人无法拨打getContainer()。有没有办法在 Java 中做到这一点?否则,人们在这种情况下会怎么做?
【问题讨论】:
-
所以为了澄清你可能会问什么......你想要一个名为
Container的类,它有两个且只有两个子类,分别称为Bucket和Bag,对吗?跨度> -
是的。我刚刚意识到,为了防止它在外部被子类化,我能想到的最接近的方法是使
Container的构造函数包私有。这听起来合理吗? -
听起来确实很合理。
标签: java inheritance subclass access-modifiers