【发布时间】:2023-03-30 09:14:01
【问题描述】:
在 Java 中,我有一个抽象类,它实现了一个方法(不是抽象的),我希望其他扩展它的类可以访问它,但包中的其他人不能访问它..
我认为这是不可能的,因为 private 将其保持为私有、公共和受保护的暴露太多..
你会如何解决这个问题?在所有扩展类中重新实现相同的方法不在讨论范围内。有没有办法访问父方法?
谢谢!
【问题讨论】:
标签: java inheritance access-modifiers
在 Java 中,我有一个抽象类,它实现了一个方法(不是抽象的),我希望其他扩展它的类可以访问它,但包中的其他人不能访问它..
我认为这是不可能的,因为 private 将其保持为私有、公共和受保护的暴露太多..
你会如何解决这个问题?在所有扩展类中重新实现相同的方法不在讨论范围内。有没有办法访问父方法?
谢谢!
【问题讨论】:
标签: java inheritance access-modifiers
如果您希望任何扩展类的东西都可以访问该方法,那么protected 就是您想要的修饰符。这就是它的用途。
【讨论】:
but not by everyone else in the package..这是不可能的。您可以使用protected 访问权限来允许子类的访问权限,但这也将包括对同一包中每个类的访问权限。
【讨论】:
使用 protected 并创建一个仅包含抽象类及其子类的包。不要将不应访问受保护方法的任何其他类放在该包中。
如果您担心其他人可能会在该包中创建一个新类并开始访问受保护的方法,那么确实没有语言结构可以防止这种情况发生。您要么信任其他开发人员,要么拥有严格的同行评审流程。
【讨论】: