简述overload、override和overwrite的区别

8 篇文章 0 订阅

overload意为重载,override意为覆盖,overwrite意为重写。从中文意思上看,并无差别,但是如下所示,给出英文定义:

Overloading occurs when two or more methods in one class have the same method name but different parameters.
Overriding or overwrite means having two methods with the same method name and parameters (i.e., method signature). One of the methods is in the parent class and the other is in the child class.

即overload为同一个类中,存在多个方法名相同的函数,但是他们拥有不同的参数(参数个数,类型,顺序)。

而 override 和 overwrite 为子类和父类之间,子类和父类拥有同样的方法名和参数列表,只是将方法体重写。这是面向对象编程的多态性。

重载规则
(1)包含多个同名函数,但是参数各不相同。
(2)参数类型、参数个数、参数顺序(不同类型间)至少有一个不同。
(3)可以改变返回值类型(不能作为重载判断依据)
(4)可以改变访问修饰符(不能作为重载判断依据)
(5)可以改变异常类型和数量(不能作为重载判断依据)

重写规则
(1)存在于子类和父类之间
(2)子类必须和父类的方法名和参数列表必须完全相同。
(3)可以改变返回值类型,但子类返回值类型必须是父类返回值类型的派生类。
(4)可以改变访问修饰符,但是子类权限只能更开放。
(5)声明为 final 的方法不能被重写。
(6)声明为 static 的方法不能被重写,但是可以被重新声明。
(7)构造器不能被重写。
(8)子类和父类在同一个包中时,子类可以重写父类所有方法(出 private 和 final)。
(9)子类和父类在不同包中时,子类只能重写父类的 public 和 protected 的非 final 方法。
(10)重写可以抛出任何非强制性异常,但是不能抛出新的强制性异常,或者比父类方法更广泛的异常。

强制性异常:必须在抛出异常的部分 try catch 或者向上 throws。
非强制性异常:用不用 try catch 和 throw 都可以。
java 中只有 RuntimeException 是强制性异常,其余均为非强制性异常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值