重载和重写

系统 2165 0
老话重提,又是重载和重写的区别等的概念性问题,记录下,以后万一需要,直接查看。

重载(Overload)
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
只能重载构造函数
规则
  • 被重载的方法 必须 改变参数列表;

  • 被重载的方法 可以 改变返回类型;

  • 被重载的方法 可以 改变访问修饰符;

  • 被重载的方法 可以 声明新的或更广的检查异常;

  • 方法能够在同一个类中或者在一个子类中被重载。

重写(Override)
能够在需要新的子类特有行为时重新在子类中定义方法。
规则
  • 参数列表 必须完全 与被重写方法的相同;

  • 返回类型 必须完全 与被重写方法的返回类型相同;

  • 访问级别的限制性 一定不能 比被重写方法的

  • 访问级别的限制性可以比被重写方法的弱;

  • 重写方法 一定不能抛出新的检查异常或比被重写的方法声明的检查异常更广泛 的检查异常

  • 重写的方法能够抛出更少或更有限的异常(也就是说,被重写的方法声明了异常,但重写的方法可以什么也不声明)

  • 不能重写被标示为final的方法

  • 如果不能继承一个方法,则不能重写这个方法。


区别:
区别点           重载方法                     重写方法
参数列表         必须修改                   一定不能修改
返回类型         可以修改                   一定不能修改
异常             可以修改        可以减少或删除,一定不能抛出新的或者更广的异常
访问             可以修改             一定不能做更养个的限制(可以降低限制)

调用
重载方法:
参数类型决定选择哪个重载版本(根据声明的参数类型),这发生在编译时。被调用的实际方法仍是发生在运行时期的虚拟方法调用。但是编译器已经知道所调用的方法的签名。因此,在运行时期,参数匹配已经明确,只是还不知道该方法所在的实际类。
重写方法:
对象类型(即:堆上实际实例的类型决定调用选择哪个方法,这发生在运行时期)

重载和重写


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论