繁体   English   中英

一种Java方法,只能由其自己的类或其他子类调用

[英]A Java method that can only be called by its own class or by other subclasses

我希望我的类有一个只能由它自己或它的子类调用的方法。

最接近的是protected访问,但它也允许同一个包中的其他类调用该方法,这是我不想要的。

有没有办法实现这一点,或者我应该考虑某种包重构?

在我看来private不会让子类使用该方法。

请参阅Java,默认,公共,受保护和私有之间的区别

哪有这回事。 但是您可以在空包中移动该类并使用protected

简答:重构您的包裹

说明:

java规范认为package关系比subclass关系更紧密。 这是因为我可以扩展任何类,只要我导入它。

如果要确保即使包外的子类也无法访问该方法,请使用default可见性修饰符。

资源

Stack Overflow参考

要实现此目的,请将您的类放在自己的包中,并使方法默认保护。 包中没有任何其他类可以通过包访问来调用它。

还要考虑一下,如果你密封了该类所在的jar ,只有你控制给定包中的内容并且有效地锁定了其他任何人在你定义的包中创建一个类 - 没有其他人能够引入一个类进入包并打破封装。

抱歉,如果您希望子类能够在不public情况下调用或覆盖方法,则protected是您唯一的选择。 如果您不希望同一个包中的其他类由于某种原因访问,请将您的类移动到新包。 但是,如果您认为包和访问控制关键字形成某种DRM(即数字版权管理)系统而不仅仅是代码管理和类“合同”系统,那么您就错了。 将访问控制关键字视为文档,编译器有能力验证其他代码何时不符合文档所表达的声明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM