💡 一则也许对你有用的小广告 🏆

欢迎飞飞程序员   ,你将获得:专属的实战项目(已更新的所有会员标识的项目都能学习) / 1v1 提问 / Java 学习路线 / PHP 学习路线 / 学习打卡 / 社群讨论

  • 正在进行中的项目:《FFBlog知识付费博客项目》 正在持续更新中,基于 Spring Boot 3.x + JDK 21...,[**点击查看**] ;
  • 《从零开发:FFBlog知识付费博客项目(全栈开发)》 演示链接: https://ffblog.ffcxy.com/  ;

截止目前, 飞飞  正在疯狂爆肝实战项目,后续还会上新更多项目,目标是将所学知识开发成项目并且分享给大家,如知识付费系统, Ai系统, CMS系统,在线商城系统,等等 ,欢迎点击围观

Java中有两个重要的概念,重新和重载,对它的理解有助于我们对Java的学习。

重写(Override)

重写是指子类重新定义父类中已有的方法,也称为方法覆盖。

特点

  • 发生在继承关系中
  • 方法名、参数列表必须完全相同
  • 返回类型可以相同或是父类方法返回类型的子类
  • 访问权限不能比父类中被重写的方法更严格
  • 不能重写被final、static修饰的方法
  • 抛出的异常不能比父类方法更宽泛

示例

class Animal {
    public void move() {
        System.out.println("动物可以移动");
    }
}

class Dog extends Animal {
    @Override
    public void move() {
        System.out.println("狗可以跑和走");
    }
}

重载(Overload)

重载是指在同一个类中,有多个同名方法但参数列表不同。

特点

  • 发生在同一个类中
  • 方法名必须相同
  • 参数列表必须不同(类型、数量或顺序)
  • 返回类型可以相同也可以不同
  • 访问修饰符可以不同
  • 可以抛出不同的异常

示例

class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    
    public double add(double a, double b) {
        return a + b;
    }
    
    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

主要区别

特性 重写(Override) 重载(Overload)
发生位置 子类和父类之间 同一个类中
方法名 必须相同 必须相同
参数列表 必须相同 必须不同
返回类型 相同或子类 可以不同
访问权限 不能更严格 可以不同
异常 不能更宽泛 可以不同
目的 修改或扩展父类方法的行为 提供多种处理方式

理解重写和重载的区别对于编写良好的面向对象Java代码非常重要。

上一篇 java版本的 ARM64 Compressed Archive 和 x64 Compressed Archive 的区别
下一篇 vue3中useRouter和useRoute的区别

全部评论(0)

头像
😃 😁 😅 😂 😍 😜 😝 🤑 🥵 🥰 😙 😎 😵 😭 😱 😖 🥳 👽 🙈 🤡 😤 💣 💯 💢 ❤️ 👍 👏 👋 👌 🤏 🙏
还没有任何评论哟~