[英]In Java, how can I create a variable that's only visible to the class and subclasses, and to no other class in the package?
[英]A Java method that can only be called by its own class or by other subclasses
我希望我的类有一个只能由它自己或它的子类调用的方法。
最接近的是protected
访问,但它也允许同一个包中的其他类调用该方法,这是我不想要的。
有没有办法实现这一点,或者我应该考虑某种包重构?
在我看来private
不会让子类使用该方法。
哪有这回事。 但是您可以在空包中移动该类并使用protected
。
简答:重构您的包裹
说明:
java规范认为package
关系比subclass
关系更紧密。 这是因为我可以扩展任何类,只要我导入它。
如果要确保即使包外的子类也无法访问该方法,请使用default
可见性修饰符。
抱歉,如果您希望子类能够在不public
情况下调用或覆盖方法,则protected
是您唯一的选择。 如果您不希望同一个包中的其他类由于某种原因访问,请将您的类移动到新包。 但是,如果您认为包和访问控制关键字形成某种DRM(即数字版权管理)系统而不仅仅是代码管理和类“合同”系统,那么您就错了。 将访问控制关键字视为文档,编译器有能力验证其他代码何时不符合文档所表达的声明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.