重载和覆盖(重写)区别

重载和覆盖(重写)区别

重载和覆盖有什么区别
重载和重写都是多态的一种体现,重载是编译期的多态性,重写是运行期的多态性。重载又称为静多态或者静态绑定,重写称为动多态或者动态绑定。

重载:
同一个类中,方法名相同,但方法的参数的个数、类型、顺序至少有一个不同,即可构成方法重载。

重写:
1、方法的方法名、参数类型/个数、返回值相同
2、子类方法不能缩小父类方法的访问权限(public>protected>default>private)
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)
4、存在于父类和子类之间
5、如果方法被定义为final则不能被重写
6、子类函数的访问修饰权限不能少于父类的;

重载(Overloading) 重载是在同一个类中,是让类以统一的方式处理不同类型数据的一种手段。有着相同的方法名但是参数的数据类型或者参数的个数不同,没有以返回型别作为重载的区分标准。这就是重载。它是一个类中多态性的一种表现。 Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。也称为静多态,程序可由在编译器就可以确定对象该调用那个方法。 目的:节省类中的命名资源和提高代码的可读性

重写(Override) 重写是在不同类中,当子类继承父类时,子类的方法和父类的方法相同(访问修饰限制符(子类要小于等于父类的权限,不能大于父类的权限),返回值类型,方法名,参数列表),方法体不同。这种子类的方法将父类的方法覆盖叫做重写。在父子类的继承中有相同的方法,唯一不同的就是方法体,一般是父类的该方法满足不了子类的需求所以才发生重写。 目的:为了提高子类代码的可重用性。注意:1、父类方法被默认修饰时,只能在同一包中,被其子类被重写,如果不在同一包则不能重写。2、父类的方法被protoeted时,不仅在同一包中,被其子类被重写,还可以不同包的子类重写

什么情况下可以进行方法重写?

  1. 必须具有继承关系,子类继承父类。
  2. 子类的访问权限只能更高,不能更低。
  3. 抛出异常时,子类抛出的异常范围不能比父类大。
  4. 方法的方法名、参数、返回值类型和父类的必须一致。(直接通过快捷键生成重写的方法,实际操作中这点不用考虑)

注意

  1. 方法覆盖,只针对方法,不包括属性。
  2. 由于父类的私有方法、构造方法、静态方法 不能被继承,所以不能被重写。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值