前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中方法重载和覆盖之间的区别

Java中方法重载和覆盖之间的区别

作者头像
陈哈哈
发布2020-07-06 11:06:14
5980
发布2020-07-06 11:06:14
举报
文章被收录于专栏:MySQL入坑记

Java中的重载与重载

  1. 重载在编译时发生,而重载在运行时发生:重载方法调用与其定义的绑定已在编译时发生,但是重载方法调用对其定义的绑定在运行时发生。
  2. 静态方法可以重载,这意味着一个类可以具有多个同名的静态方法。静态方法不能被覆盖,即使您在子类中声明了相同的静态方法,也与父类的相同方法无关。
  3. 最基本的区别是重载是在同一个类中完成的,而要覆盖基类和子类则是必需的。重写就是为父类的继承方法提供特定的实现。
  4. 静态绑定用于重载方法,动态绑定用于重载/覆盖方法。
  5. 性能:与覆盖相比,重载可提供更好的性能。原因是重写的方法的绑定是在运行时完成的。
  6. 私有方法和最终方法可以重载,但不能被覆盖。这意味着一个类可以具有多个同名的私有/最终方法,但是子类不能覆盖其基类的私有/最终方法。
  7. 在方法重载的情况下,方法的返回类型无关紧要,可以相同也可以不同。但是,如果方法被重写,则重写方法可以具有更特定的返回类型(请参阅this)。
  8. 执行方法重载时,参数列表应该不同。参数列表应与方法覆盖中的相同。

重载示例

代码语言:javascript
复制
//A class for adding upto 5 numbers
class Sum
{
    int add(int n1, int n2) 
    {
        return n1+n2;
    }
    int add(int n1, int n2, int n3) 
    {
        return n1+n2+n3;
    }
    int add(int n1, int n2, int n3, int n4) 
    {
        return n1+n2+n3+n4;
    }
    int add(int n1, int n2, int n3, int n4, int n5) 
    {
        return n1+n2+n3+n4+n5;
    }
    public static void main(String args[])
    {
    	Sum obj = new Sum();
    	System.out.println("Sum of two numbers: "+obj.add(20, 21));
    	System.out.println("Sum of three numbers: "+obj.add(20, 21, 22));
    	System.out.println("Sum of four numbers: "+obj.add(20, 21, 22, 23));
    	System.out.println("Sum of five numbers: "+obj.add(20, 21, 22, 23, 24));
    }
}

输出:

代码语言:javascript
复制
Sum of two numbers: 41
Sum of three numbers: 63
Sum of four numbers: 86
Sum of five numbers: 110

在这里,我们有4个相同方法的版本add。我们在add()这里重载该方法。

覆盖示例

代码语言:javascript
复制
package beginnersbook.com;
class CarClass
{
    public int speedLimit() 
    {
        return 100;
    }
}
class Ford extends CarClass
{
    public int speedLimit()
    {
        return 150;
    }
    public static void main(String args[])
    {
    	CarClass obj = new Ford();
    	int num= obj.speedLimit();
    	System.out.println("Speed Limit is: "+num);
    }
}

输出:

代码语言:javascript
复制
Speed Limit is: 150

这里speedLimit()的class方法Ford是覆盖speedLimit()class方法的CarClass

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java中的重载与重载
    • 重载示例
      • 覆盖示例
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档