java语言中方法重载与方法覆盖的异同

java语言中方法重载与方法覆盖的异同

ID:21768913

大小:24.50 KB

页数:5页

时间:2018-10-24

java语言中方法重载与方法覆盖的异同_第1页
java语言中方法重载与方法覆盖的异同_第2页
java语言中方法重载与方法覆盖的异同_第3页
java语言中方法重载与方法覆盖的异同_第4页
java语言中方法重载与方法覆盖的异同_第5页
资源描述:

《java语言中方法重载与方法覆盖的异同》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Java语言中方法重载与方法覆盖的异同  摘要  面向对象编程有三大特性:封装、继承、多态,本文主要谈谈其中之一多态的两种实现方式――方法重载与方法覆盖,并比较它们的异同。  【关键词】Java多态方法重载方法覆盖  在Java语言的学习过程中,初学者经常分不清重载与覆盖,实际上,方法重载(Overload)和方法覆盖(Override,也叫重写)都是Java多态性的体现,只是形式不同,在此,笔者简单地谈一谈两者的异同。  1方法重载与方法覆盖的特点  1.1方法重载的特点  Java语言中的方法重载就是在类中可以创建多个方法,实际上就是一个类中多态性的一种表现

2、,也叫静态多态。  如下面的例子:  1classDBUtil{  2privateStringserver="127.0.0.1";//服务器地址  3privateStringdb="HRDB";//数据库名称  4publicStringgetDBUrl(Stringserver,Stringdb){//重载方法  5return"jdbc:sqlserver://"+server+":1433;DatabaseName="+db;  6}  7publicStringgetDBUrl(Stringserver){//重载方法  8returngetDBU

3、rl(server,db);  9}  10publicStringgetDBUrl(){//重载方法  11returngetDBUrl(server,db);  12}  13}  14publicclassStaticPolymorphismDemo{  15publicstaticvoidmain(Stringargs[]){  16DBUtilutil=newDBUtil();  17//调用第4行的方法  18System.out.println(util.getDBUrl("192.168.4.23","CXHR"));  19//调用第7行的方法

4、  20System.out.println(util.getDBUrl("192.168.4.23"));  21//调用第10行的方法  22System.out.println(util.getDBUrl());  23}  24}  方法重载的主要特点有以下几点:第一个特点是方法名是相同的;第二个特点是方法的个数、顺序、参数类型至少有一项是不相同的;第三个特点是方法的返回类型不一定要是相同的;第四个特点是方法的修饰符也可以是不相同的。  1.2方法覆盖的特点  Java语言中的方法覆盖是指父类中有的方法,在子类中被重新定义,方法签名一样(方法名,参数个数

5、和参数类型都一样)的情况,也叫动态多态。  如下面的例子:  publicclassBase{  publicvoidmethod(){}  }  publicclassSubextendsBase{  publicvoidmethod(){}  }  方法覆盖的特点主要有以下几点:第一个特点是方法覆盖只存在于子类和父类之间,在同一个类中的方法不能被覆盖;第二个特点是父类方法抛出的异常可以比子类方法更多;第三个特点是父类方法的名称、参数签名和返回类型与子类方法的是一致的;第四个特点是子类是不允许将父类的静态方法覆盖为非静态方法,父类的非静态方法也不能被子类覆盖为

6、静态方法;第五个特点是子类方法不能缩小父类方法的访问权限;第六个特点是子类不能覆盖父类的私有方法;第七个特点是子类可以通过两种途径覆盖父类的抽象方法:一种是子类实现父类的抽象方法,另一种是子类重新声明父类的抽象方法;第八个特点是父类的非抽象方法可以被覆盖为抽象方法。  2方法重载与方法覆盖的异同  2.1方法重载与方法覆盖的相同点  Java语言中,方法重载与方法覆盖的主要相同点有两个:第一个相同点是法重载与方法覆盖都要求方法同名;第二个相同点是方法重载与方法覆盖在抽象方法和非抽象方法之间都可以使用。  2.2方法重载与方法覆盖的不同点  Java语言中,方法重

7、载与方法覆盖的主要不同点有以下5个:第一个不同点是方法重载不允许参数签名一致,相反,方法覆盖则要求参数签名必须一致;第二个不同点是方法重载对返回类型是否一致不做限制,而方法覆?w则要求返回类型必须一致;第三个不同点是方法重载可以用于同一个类的所有方法,而方法覆盖则仅限于用于子类覆盖父类的方法;第四个不同点是方法重载对方法的访问权限和抛出的异常方法不做限制性要求,而方法覆盖对此则有特殊的要求;第五个不同点是一个方法在所在的类中可以多次重载,而父类的一个方法则只能被子类覆盖一次。  总之,方法的重载(Overload)和覆盖(Overrid)是Java多态性的不同表

8、现。重载(Overloa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。