【问题标题】:how to declare a method in parent abstract class so that it can be accessed by children?如何在父抽象类中声明一个方法,以便子级可以访问它?
【发布时间】:2023-03-30 09:14:01
【问题描述】:

在 Java 中,我有一个抽象类,它实现了一个方法(不是抽象的),我希望其他扩展它的类可以访问它,但包中的其他人不能访问它..

我认为这是不可能的,因为 private 将其保持为私有、公共和受保护的暴露太多..

你会如何解决这个问题?在所有扩展类中重新实现相同的方法不在讨论范围内。有没有办法访问父方法?

谢谢!

【问题讨论】:

    标签: java inheritance access-modifiers


    【解决方案1】:

    如果您希望任何扩展类的东西都可以访问该方法,那么protected 就是您想要的修饰符。这就是它的用途。

    【讨论】:

      【解决方案2】:

      but not by everyone else in the package..这是不可能的。您可以使用protected 访问权限来允许子类的访问权限,但这也将包括对同一包中每个类的访问权限。

      【讨论】:

        【解决方案3】:

        使用 protected 并创建一个仅包含抽象类及其子类的包。不要将不应访问受保护方法的任何其他类放在该包中。

        如果您担心其他人可能会在该包中创建一个新类并开始访问受保护的方法,那么确实没有语言结构可以防止这种情况发生。您要么信任其他开发人员,要么拥有严格的同行评审流程。

        【讨论】:

        • 如果方法受到保护,您不必将子类放在同一个包中...
        • @pgras 确实如此,但最好将它们保存在同一个包或子包中,以避免包之间的循环依赖。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-24
        • 2022-01-13
        • 1970-01-01
        • 2016-11-28
        • 1970-01-01
        • 2012-05-27
        • 2016-05-10
        相关资源
        最近更新 更多