Java Override重写能否改变方法的访问修饰符

发布时间:2025-04-30 05:35:36 作者:小樊
来源:亿速云 阅读:101

在Java中,当你重写一个方法时,你不能扩大方法的访问权限。这意味着如果你在一个父类中有一个受保护的方法(protected),那么在子类中重写这个方法时,你不能将其改为公共的(public)。但是,你可以将访问权限保持不变或者减少访问权限。

以下是一些示例:

  1. 如果父类方法的访问修饰符是public,那么子类重写时也必须是public
class Parent {
    public void foo() {
        // ...
    }
}

class Child extends Parent {
    @Override
    public void foo() { // 必须是public
        // ...
    }
}
  1. 如果父类方法的访问修饰符是protected,那么子类重写时可以是protected或者private
class Parent {
    protected void foo() {
        // ...
    }
}

class Child extends Parent {
    @Override
    protected void foo() { // 可以是protected
        // ...
    }

    // 以下代码会编译错误,因为不能扩大访问权限
    // private void foo() {
    //     // ...
    // }
}
  1. 如果父类方法的访问修饰符是default(没有修饰符),那么子类重写时只能是default或者private
class Parent {
    void foo() {
        // ...
    }
}

class Child extends Parent {
    @Override
    void foo() { // 可以是default
        // ...
    }

    // 以下代码会编译错误,因为不能扩大访问权限
    // private void foo() {
    //     // ...
    // }
}

总之,重写方法时,子类方法的访问修饰符不能比父类方法的访问修饰符更宽松。

推荐阅读:
  1. java的访问修饰符
  2. Java 修饰符

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Java Override重写能否抛出新的异常

下一篇:Java中continue的替代方案有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》