【问题标题】:Overriding methods from different classes in java覆盖java中不同类的方法
【发布时间】:2014-08-27 18:20:57
【问题描述】:

来自java tutorial

  • 与实例的超类在同一包中的子类可以覆盖任何未声明为私有或最终的超类方法。

  • 不同包中的子类只能覆盖声明为 public 或 protected 的非最终方法。

但是有什么区别呢?如果一个方法没有被声明为私有,那么它必须是公共的还是没有保护的?

【问题讨论】:

    标签: java class overriding


    【解决方案1】:

    这点可以改写为:你只能覆盖你的类可以访问的方法,如果这个方法不是最终的

    因此,如果您在放置基类(或接口)的包之外创建类,则只能覆盖非最终的 publicprotected 方法。

    如果派生类与基类在同一个包中,那么您也可以在没有访问修饰符的情况下覆盖非最终方法(包保护)。

    你永远不能覆盖私有方法。

    【讨论】:

      【解决方案2】:

      其实没有。

      方法可以是公共的、受保护的、私有的或包私有。 如果您不指定访问修饰符,则该方法是包私有的。

      很明显为什么来自不同包的类不能覆盖包私有成员。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多