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

在本文中,我们将讨论Java重载和覆盖之间的区别。如果您不熟悉这些术语,请参考以下文章:

Java中的重载与重载

重载在编译时发生,而重载在运行时发生:重载方法调用与其定义的绑定已在编译时发生,但是重载方法调用对其定义的绑定在运行时发生。

静态方法可以重载,这意味着一个类可以具有多个同名的静态方法。静态方法不能被覆盖,即使您在子类中声明了相同的静态方法,也与父类的相同方法无关。

最基本的区别是重载是在同一个类中完成的,而要覆盖基类和子类则是必需的。重写就是为父类的继承方法提供特定的实现。

静态绑定用于重载方法,动态绑定用于重载/覆盖方法。

性能:与覆盖相比,重载可提供更好的性能。原因是重写的方法的绑定是在运行时完成的。

私有方法和最终方法可以重载,但不能被覆盖。这意味着一个类可以具有多个同名的私有/最终方法,但是子类不能覆盖其基类的私有/最终方法。

在方法重载的情况下,方法的返回类型无关紧要,可以相同也可以不同。但是,如果方法被重写,则重写方法可以具有更特定的返回类型(请参阅this)。

执行方法重载时,参数列表应该不同。参数列表应与方法覆盖中的相同。

重载示例

//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));

}

}

输出:

Sum of two numbers: 41

Sum of three numbers: 63

Sum of four numbers: 86

Sum of five numbers: 110

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

覆盖示例

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);

}

}

输出:

Speed Limit is: 150

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

本文同步分享在 博客“_陈哈哈”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值