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).

主站蜘蛛池模板: 偷拍久久网| 日本高清免费不卡视频| 中文字幕在线视频免费| 国产嫖妓91东北老熟女久久一| 中文字幕自拍偷拍| 在线综合亚洲欧美网站| 青青草原国产免费av观看| 第一页亚洲| 国产真实二区一区在线亚洲| 欧美精品导航| 久久亚洲国产一区二区| 国产玖玖视频| 亚洲精品大秀视频| 欧美精品高清| 欧美在线精品一区二区三区| 国产成人精品第一区二区| 亚洲一道AV无码午夜福利| 精品国产电影久久九九| 有专无码视频| 九色在线观看视频| 特级aaaaaaaaa毛片免费视频 | 精品国产免费观看| 国产成人艳妇AA视频在线| 国产成年女人特黄特色毛片免| 人禽伦免费交视频网页播放| 国产打屁股免费区网站| 亚洲品质国产精品无码| 小13箩利洗澡无码视频免费网站| 国产成年女人特黄特色毛片免 | 国产亚洲欧美在线视频| AV老司机AV天堂| av在线无码浏览| 久久激情影院| 依依成人精品无v国产| 亚洲综合色吧| 亚洲成人在线网| 91国内在线视频| 九九九精品成人免费视频7| 人妻中文久热无码丝袜| 婷婷综合缴情亚洲五月伊| 97se亚洲综合在线天天| 久久亚洲精少妇毛片午夜无码| 国产精品视频第一专区| 精品久久久久无码| 国产主播一区二区三区| 成人va亚洲va欧美天堂| 亚洲一道AV无码午夜福利| 91精品国产福利| 日本三区视频| 国产第一色| 日本一区二区三区精品视频| 一本大道香蕉久中文在线播放| 国产最新无码专区在线| yjizz视频最新网站在线| 丰满人妻久久中文字幕| 激情爆乳一区二区| 在线观看av永久| 欧美在线综合视频| 亚洲成人精品在线| 国产网站一区二区三区| 亚洲品质国产精品无码| 在线免费无码视频| 免费欧美一级| 成年女人a毛片免费视频| 伊人精品视频免费在线| 色综合中文字幕| 国产二级毛片| 国产jizz| 毛片免费高清免费| 国产精品大白天新婚身材| 欧美黑人欧美精品刺激| 欧美翘臀一区二区三区| 欧美国产日韩在线观看| 国产91在线|日本| 激情亚洲天堂| 国产日韩精品欧美一区喷| 五月婷婷丁香色| 538精品在线观看| 免费在线国产一区二区三区精品| 亚洲愉拍一区二区精品| 亚洲精品视频网| 欧美另类第一页|