简述override和overload的区别

1.重载的概念:
----->在同一个类中,允许存在同名函数,但它们的zhi参数个数或者参数类型不同即可。

public static void main(String[] args){
  System.out.println(add(1,2));
  System.out.println(add(1.11,2.22));
}
//返回一个int类型相加的和
public static int add(int a, int b){
  return a + b;
}
//返回一个double类型想加的和
public static double add(double a, double b){
  return a + b;
}

重载,在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同,Java就会将它们看做唯一的方法。简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
重写就是子类重写了父类的方法。
比如:

class Fu{
  int num = 3;
}
class Zi extends Fu{
  int num = 5;
}

这时候Zi类继承了Fu类,也拥有了num,这时候输出num,JVM(虚拟机)会先去Fu类中查找,输出Fu类中的num,但是Zi类有num,所有在运行Zi类的时候重写了num的值,输出5

这里附上总结:

Overload 特点

1、重载时通过不同的参数样式来区分。例如,不同的参数类型,不同的参数个数,不同的参数顺序)

2、不能通过方法访问权限、返回类型、抛出的异常进行重载;

3、方法的异常类型和数目不会对重载造成影响;

4、对于继承来说,如果基类方法的访问权限为private,那么就不能再派生类中进行重载,只是一个新的方法而已。

Override 特点:

1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;

2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;

3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;

4、方法被定义为final不能被重写;

5、对于继承来说,如果某一方法在父类中是访问权限是private,那么就不能在子类对其进行重写 覆盖,如果定义的话,也只是定义了一个新方法,而不会达到重写覆盖的效果。(通常存在于父类和 子类之间。)

重载(overload)和覆盖(override)主要区别:

1)覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中多个方法的联系属于水平的关系;

2)覆盖只能由一个方法或一对方法产生关系,重载是多个方法之间的联系;

3)覆盖要求参数列表相同;重载要求参数列表不同;

4)覆盖关系中,调用方法体是根据对象的类型(对象对应存储空间决定的);而重载是根据调用时的实参表与形参表来选择方法体的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值