最佳答案
不止一次,我发现自己渴望一种在 Java 中不可能实现的变量可见性。我希望某些成员在他们自己的类和任何子类中都是可见的,而不是对包的其他部分或世界的其他部分。换句话说,我想要这样:
Modifier Class Package Subclass World
sub-class Y N Y N
然而,Java 的设计者只给了我 这个:
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
当我想要这样的东西的典型情况是当创建一个抽象类。有时候我发现抽象父类需要访问某些成员,但具体的子类也需要。我可以通过让成员 protected
给他们提供这种访问权限,但是当我真的不想这样做时,这就打开了对包的其余部分的访问权限。
要完全清楚,我知道这样的修饰符是 没有在 Java 中可能的。我的问题是为什么 Java 中没有包含这样的修饰符?它似乎(对我来说)是一个比 protected
或默认更自然的可见性水平。原因仅仅是因为它没有足够重要到被包括在内,还是因为它与我没有考虑到的可能的副作用有更多的关系?