我意识到这是一个非常基本的问题,但它一直困扰着我。据我了解,如果您在 Java 中声明一个私有字段,那么它在该类之外是不可见的。如果它受到保护,那么它可用于继承的类和同一包中的任何东西(如果其中任何一个定义不正确,请纠正我)。
这是否意味着不能声明一个只能被继承类访问的字段,而不是同一包中的其他非继承类?
我很欣赏有办法解决这个问题,但是有没有你想要这种行为的情况?
显然,上述问题适用于方法和领域。
非常感谢。
我意识到这是一个非常基本的问题,但它一直困扰着我。据我了解,如果您在 Java 中声明一个私有字段,那么它在该类之外是不可见的。如果它受到保护,那么它可用于继承的类和同一包中的任何东西(如果其中任何一个定义不正确,请纠正我)。
这是否意味着不能声明一个只能被继承类访问的字段,而不是同一包中的其他非继承类?
我很欣赏有办法解决这个问题,但是有没有你想要这种行为的情况?
显然,上述问题适用于方法和领域。
非常感谢。
请参阅:http: //java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html
包 > 子类,您永远不能拥有仅由子类可见的字段,而不能由同一包中的类可见。
基本上:
更多信息在这里。
是的,Java 的受保护访问有点奇怪。我无法立即明白为什么它是可取的。就我个人而言,字段并不困扰我,因为我不喜欢非私有字段(常量除外),但其他成员也是如此。
.NET 根本没有包/命名空间访问可见性的概念,但它有一个替代方案,即程序集(想想“jar 文件”——不完全相同,但很接近)。坦率地说,我想要命名空间和部署单元可见性选项,但似乎我注定要失望......