浅谈Overload和Override的区别.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈Overload和Override的区别.pdf

Overload Override Overload Override 浅谈OOvveerrllooaadd和OOvveerrrriiddee的区别 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同 的参数类型,则称为方法的重载(Overloading)。本文介绍的是Overload和Override的区别。 Overload Override Overload Override OOvveerrllooaadd是重载的意思,OOvveerrrriiddee是覆盖的意思,也就是重写。 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各 不相同(即参数个数或类型不同)。 重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通 过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义 的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。 子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子 异常,因为子类可以解决父类的一些问题,不能比父类有更多的问题。子类方法的访问权限 只能比父类的更大,不能更小。如果父类的方法是private类型,那么,子类则不存在覆盖 的限制,相当于子类中增加了一个全新的方法。 至于Overloaded的方法是否可以改变返回值的类型这个问题,要看你倒底想问什么 呢?这个题目很模糊。如果几个Overloaded的方法的参数列表不一样,它们的返回者类型 当然也可以不一样。 但我估计你想问的问题是:如果两个方法的参数列表完全一样,是否可以让它们的返回 值不同来实现重载Overload。这是不行的,我们可以用反证法来说明这个问题,因为我们 有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调 用map.remove(key)方法时,虽然remove方法有返回值,但是我们通常都不会定义接收返 回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型 不同,java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来 判断。 override可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以 求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对 方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法 以外,我们在继承中也可能会在子类覆盖父类中的方法。在覆盖要注意以下的几点: 1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果; 2、覆盖的方法的返回值必须和被覆盖的方法的返回一致; 3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类; 4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其 进行覆盖。 overload对我们来说可能比较熟悉,可以翻译为重载,它是指我们可以定义一些名称 相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同 的参数样式,来选择合适的方法执行。在使用重载要注意以下的几点: 1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数, 不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int,float), 但是不能为fun(int,int)); 2、不能通过访问权限、返回类型、抛出的异常进行重载; 3、方法的异常类型和数目不会对重载造成影响; 4.对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对 其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。 总之,重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个 类中多态性的一种表现。很重要的一点就是,Overloaded的方法是可以改变返回值的类型。 希望对你有帮助。 本文由天津白癜风医院(/)负责人整理与大家分享!

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档