- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅析Java语言中的重载与重写
摘要:一个类中多个重载的方法,体现了程序编译时的多态,具有很大的灵活性;而利用类的继承过程中出现的重写方法,可以实现程序运行时的多态,大大提高了程序的适应性。重载和重写形式上的相似,加大了学习者理解的难度。本文通过实例讲述了二者的用法,以求为开发者提供借鉴。
关键词:重载;重写;多态;继承
中图分类号:TP311.11 文献标识码:A文章编号:1007-9599 (2011) 05-0000-01
Overloading and Rewriting of Java Language
Peng Jian
(Jiangxi Vocational College of FinanceEconomics,Jiujiang332000,China)
Abstract:A class of multiple overloaded methods,reflecting the multi-state program compiled with great flexibility;The use of class inheritance override methods emerged in the process can be achieved when running multiple states,greatly improve the adaptability of the program.Overloading and override similar form,increasing the difficulty of understanding the learner.This paper describes two instances of the use,in order to provide a reference for developers.
Keywords:Overloading;Rewriting;Polymorphism;Inheritance
在Java语言学习的过程中,重载与重写是两个知识难点,也是容易混淆的两个概念。两者之间有相似的地方,但更多的是本质上的不同。开发者必须认真加以区分。
一、理解重载
所谓重载就是指在同一个类中定义了多个同名而不同内容的成员方法。同一个类中多个重载的方法主要通过形式参数列表中参数数据类型不同、参数顺序不同或参数个数不同来区分的。返回值类型和代码体不能区分重载。Java编译器会检查每个方法所用的参数个数,顺序和类型,然后自动调用正确的方法。
例如:
public class Overloading{
int add(int x,int y){return x+y;}//方法一
double add(int x,double y){return x+y;}//方法二
double add(double x,int y){return x+y;}//方法三
int add(int x,int y,int z){return x+y+z;}//方法四
}
在本例中:方法一与二体现的是参数数据类型不同的重载;方法二与三体现的是参数顺序不同的重载;方法一与四体现的是参数个数不同重载;对于重载很容易产生错误的理解,例如类中加入代码:
double add(int x,int y){return double(x+y);}//方法五
int add(int y,int x){return x+y;}//方法六
此时编译会报出错误信息,原因分析如下:
方法五与一貌似是重载,实则二者不可同时存在。假设在程序中需要调用方法add(1,2),那么编译器到底应该返回的是int型还是double型呢?因此这样的重载是非法的。
方法六与一实际上是重复定义方法。究其原因在于没有正确理解形式参数的含义。在这两个方法中,参数都是int型的整数,x,y仅仅是形式参数。程序在调用时将会用相同类型的实际参数带入,而不管形式参数用什么名字,因此这是完全相同的两个方法。
二、理解重写
所谓重写就是指在子类继承父类的过程中重新定义与父类同名、相同参数列表,相同返回值的成员方法。重写是发生在类的继承时才可能出现的。值得注意的是,子类覆盖父类的方法时,访问权限可以扩大,但不能缩小,而且不能产生更多的例外。例如:
public class Fruit{
protected void eat(int x){System.out.println(“吃了”+x+“个水果”);}//父类方法
}
public class App
文档评论(0)