999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java語言中方法重載與方法覆蓋的異同

2017-05-10 23:49:03李娜
電子技術與軟件工程 2017年8期

李娜

摘 要

面向對象編程有三大特性:封裝、繼承、多態,本文主要談談其中之一多態的兩種實現方式——方法重載與方法覆蓋,并比較它們的異同。

【關鍵詞】Java 多態 方法重載 方法覆蓋

在Java語言的學習過程中,初學者經常分不清重載與覆蓋,實際上,方法重載(Overload)和方法覆蓋(Override,也叫重寫)都是Java多態性的體現,只是形式不同,在此,筆者簡單地談一談兩者的異同。

1 方法重載與方法覆蓋的特點

1.1 方法重載的特點

Java語言中的方法重載就是在類中可以創建多個方法,實際上就是一個類中多態性的一種表現,也叫靜態多態。

如下面的例子:

1 class DBUtil{

2 private String server="127.0.0.1";//服務器地址

3 private String db="HRDB";//數據庫名稱

4 public String getDBUrl(String server,String db){//重載方法

5 return "jdbc:sqlserver://"+server+":1433; DatabaseName="+db;

6 }

7 public String getDBUrl(String server){ //重載方法

8 return getDBUrl(server,db);

9 }

10 public String getDBUrl(){//重載方法

11 return getDBUrl(server,db);

12 }

13 }

14 public class StaticPolymorphismDemo {

15 public static void main(String args[]) {

16 DBUtil util=new DBUtil();

17 //調用第4行的方法

18 System.out.println(util.getDBUrl("192.168.4.23","CXHR"));

19 //調用第7行的方法

20 System.out.println(util.getDBUrl("192.168.4.23"));

21 //調用第10行的方法

22 System.out.println(util.getDBUrl());

23 }

24 }

方法重載的主要特點有以下幾點:第一個特點是方法名是相同的;第二個特點是方法的個數、順序、參數類型至少有一項是不相同的;第三個特點是方法的返回類型不一定要是相同的;第四個特點是方法的修飾符也可以是不相同的。

1.2 方法覆蓋的特點

Java語言中的方法覆蓋是指父類中有的方法,在子類中被重新定義,方法簽名一樣(方法名,參數個數和參數類型都一樣)的情況,也叫動態多態。

如下面的例子:

public class Base {

public void method() {}

}

public class Sub extends Base{

public void method() {}

}

方法覆蓋的特點主要有以下幾點:第一個特點是方法覆蓋只存在于子類和父類之間,在同一個類中的方法不能被覆蓋;第二個特點是父類方法拋出的異常可以比子類方法更多; 第三個特點是父類方法的名稱、參數簽名和返回類型與子類方法的是一致的; 第四個特點是子類是不允許將父類的靜態方法覆蓋為非靜態方法,父類的非靜態方法也不能被子類覆蓋為靜態方法;第五個特點是子類方法不能縮小父類方法的訪問權限;第六個特點是子類不能覆蓋父類的私有方法;第七個特點是子類可以通過兩種途徑覆蓋父類的抽象方法:一種是子類實現父類的抽象方法,另一種是子類重新聲明父類的抽象方法;第八個特點是父類的非抽象方法可以被覆蓋為抽象方法。

2 方法重載與方法覆蓋的異同

2.1 方法重載與方法覆蓋的相同點

Java語言中,方法重載與方法覆蓋的主要相同點有兩個:第一個相同點是法重載與方法覆蓋都要求方法同名;第二個相同點是方法重載與方法覆蓋在抽象方法和非抽象方法之間都可以使用。

2.2 方法重載與方法覆蓋的不同點

Java語言中,方法重載與方法覆蓋的主要不同點有以下5個:第一個不同點是方法重載不允許參數簽名一致,相反,方法覆蓋則要求參數簽名必須一致;第二個不同點是方法重載對返回類型是否一致不做限制,而方法覆蓋則要求返回類型必須一致;第三個不同點是方法重載可以用于同一個類的所有方法,而方法覆蓋則僅限于用于子類覆蓋父類的方法;第四個不同點是方法重載對方法的訪問權限和拋出的異常方法不做限制性要求,而方法覆蓋對此則有特殊的要求;第五個不同點是一個方法在所在的類中可以多次重載,而父類的一個方法則只能被子類覆蓋一次。

總之,方法的重載(Overload)和覆蓋(Overrid)是Java多態性的不同表現。重載(Overload)是一個類中多態性的一種表現,而覆蓋(Overrid)是父類與子類之間多態性的一種表現。靈活地運用方法重載與方法覆蓋,不僅能減少編碼的工作量,也能大大提高程序的可維護性及可擴展性。

參考文獻

[1]姜靜思.Java中類的多態性分析[J].科技展望,2015(01).

[2]陽小蘭,錢程.JAVA語言中構造方法的繼承與重載探討[J].電腦知識與技術,2010(21).

[3]李寧.Java中的方法重寫與方法重載[J].科技信息,2009(03).

主站蜘蛛池模板: 三上悠亚一区二区| 国产成人8x视频一区二区| 国产一区二区免费播放| 国产91久久久久久| 青青操国产视频| 欧美另类视频一区二区三区| 一级毛片视频免费| 国产不卡网| 亚洲精品国产日韩无码AV永久免费网 | 福利在线不卡一区| 亚洲色大成网站www国产| 人妻熟妇日韩AV在线播放| 尤物午夜福利视频| 成人在线欧美| 国产精品无码AV中文| 手机在线看片不卡中文字幕| 国产chinese男男gay视频网| 91国语视频| 国产精品美女自慰喷水| 亚洲AV一二三区无码AV蜜桃| 亚洲成人一区在线| 亚洲日本中文字幕乱码中文| 欧洲日本亚洲中文字幕| 亚洲第一成网站| 日韩精品亚洲精品第一页| 国产超碰一区二区三区| 美女扒开下面流白浆在线试听 | 国产成人免费| 99视频有精品视频免费观看| 色综合久久综合网| 高h视频在线| 国产精品无码翘臀在线看纯欲| 亚洲高清在线播放| 找国产毛片看| 亚洲Av综合日韩精品久久久| 麻豆精品久久久久久久99蜜桃| 免费在线看黄网址| 亚洲色图另类| 无码AV高清毛片中国一级毛片| 久久精品女人天堂aaa| 韩国v欧美v亚洲v日本v| 精品视频在线观看你懂的一区| 日韩在线播放中文字幕| 国产99视频免费精品是看6| 亚洲床戏一区| 伊人福利视频| 国产呦精品一区二区三区下载| 成人精品亚洲| 欧美日韩国产高清一区二区三区| 国内精品视频| 国产成人高精品免费视频| 毛片免费高清免费| 国产精品理论片| 伊人久久久久久久| 日本三级欧美三级| 国国产a国产片免费麻豆| 丁香亚洲综合五月天婷婷| 国产一区三区二区中文在线| 国产精品人成在线播放| 久久五月视频| 欧美性久久久久| 白浆免费视频国产精品视频| 日韩欧美中文字幕在线韩免费| 香蕉eeww99国产精选播放| 中文字幕在线观看日本| 欧美国产另类| 99视频在线免费| 亚洲91精品视频| 青青草原国产精品啪啪视频| 国产一区二区色淫影院| 国产精品一区在线麻豆| 手机成人午夜在线视频| 日韩天堂网| 国产精品欧美日本韩免费一区二区三区不卡| 国产丝袜丝视频在线观看| 国产一区亚洲一区| 欧美午夜久久| 欧洲av毛片| 久久亚洲AⅤ无码精品午夜麻豆| 欧美在线导航| 三上悠亚在线精品二区| 久久一级电影|