• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

奋斗的软件工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

函数重写和函数重载的区别是什么?

函数重写(Override)和函数重载(Overload)有以下重要区别:

1. 定义位置不同:
- 函数重写发生在具有继承关系的子类和父类之间。
- 函数重载可以发生在同一个类中。

2. 方法签名要求不同:
- 重写要求方法名、参数列表和返回类型都必须与父类中被重写的方法完全相同(返回类型可以是协变类型)。
- 重载要求方法名相同,但参数列表(参数的类型、个数、顺序)不同。

3. 访问权限限制不同:
- 重写的方法不能比父类中被重写的方法有更严格的访问权限。
- 重载对方法的访问权限没有特殊要求。

4. 异常处理不同:
- 重写的方法不能抛出比父类中被重写方法更多的异常。
- 重载对异常没有限制。

下面是一些示例来说明:

函数重载示例:

class OverloadingExample {
    void print(int num) {
        System.out.println("Integer: " + num);
    }

    void print(String str) {
        System.out.println("String: " + str);
    }

    void print(double num) {
        System.out.println("Double: " + num);
    }
}

在这个示例中,print 方法被重载了三次,根据传入参数的类型不同执行不同的操作。

函数重写示例:

class Parent {
    void display() {
        System.out.println("Parent's display");
    }
}

class Child extends Parent {
    @Override
    void display() {
        System.out.println("Child's display");
    }
}

在这个示例中,子类 Child 中的 display 方法重写了父类 Parent 中的 display 方法。

posted on 2024-07-26 20:44  周政然  阅读(253)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3