如果我在packageA中有一个顶级类classA,并且我想让classB扩展classA,但我想在packageB中包含classB,而packageB中的任何其他类都无法访问classA(因此classA不能是公共的) ),这不是意味着 classA 必须可以被它自己的包以及其他包中的子包访问,因此 classA 不应该受到保护吗? 显然我们可以通过将 classB 移至 packageA 来解决这个问题,但是如果由于某种原因我们不能这样做怎么办?
好吧,我想我也必须填写这个,我尝试使 classA 受保护,但出现错误。
你不能使用受保护的
另一种方法是使用密封,但两个类应该位于同一个包中
所以这是 A 类
package a;
sealed class A permits B {
}
B 类
package a;
public non-sealed/final class B extends A{
}
或
public sealed class B extends A permits Z{
}