为什么 Java 中没有子类可见性修饰符?
2022-08-31 12:56:47
不止一次,我发现自己渴望一个在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