亚洲一级免费看,特黄特色大片免费观看播放器,777毛片,久久久久国产一区二区三区四区,欧美三级一区二区,国产精品一区二区久久久久,人人澡人人草

java語(yǔ)言

Java語(yǔ)言中方法重載與方法覆蓋的異同

時(shí)間:2025-05-10 07:42:53 java語(yǔ)言 我要投稿
  • 相關(guān)推薦

Java語(yǔ)言中方法重載與方法覆蓋的異同

  導(dǎo)語(yǔ):在Java語(yǔ)言的學(xué)習(xí)過(guò)程中,初學(xué)者經(jīng)常分不清重載與覆蓋,實(shí)際上,方法重載(Overload)和方法覆蓋(Override,也叫重寫(xiě))都是Java多態(tài)性的體現(xiàn),只是形式不同,在此,筆者簡(jiǎn)單地談一談兩者的異同。 下面就由小編為大家介紹一下Java語(yǔ)言中方法重載與方法覆蓋的異同,歡迎大家閱讀!

  1 方法重載與方法覆蓋的特點(diǎn)

  1.1 方法重載的特點(diǎn)

  Java語(yǔ)言中的方法重載就是在類中可以創(chuàng)建多個(gè)方法,實(shí)際上就是一個(gè)類中多態(tài)性的一種表現(xiàn),也叫靜態(tài)多態(tài)。

  如下面的例子:

  1 class DBUtil{

  2 private String server="127.0.0.1";//服務(wù)器地址

  3 private String db="HRDB";//數(shù)據(jù)庫(kù)名稱

  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 //調(diào)用第4行的方法

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

  19 //調(diào)用第7行的方法

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

  21 //調(diào)用第10行的方法

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

  23 }

  24 }

  方法重載的主要特點(diǎn)有以下幾點(diǎn):第一個(gè)特點(diǎn)是方法名是相同的;第二個(gè)特點(diǎn)是方法的個(gè)數(shù)、順序、參數(shù)類型至少有一項(xiàng)是不相同的;第三個(gè)特點(diǎn)是方法的返回類型不一定要是相同的;第四個(gè)特點(diǎn)是方法的修飾符也可以是不相同的。

  1.2 方法覆蓋的特點(diǎn)

  Java語(yǔ)言中的方法覆蓋是指父類中有的方法,在子類中被重新定義,方法簽名一樣(方法名,參數(shù)個(gè)數(shù)和參數(shù)類型都一樣)的情況,也叫動(dòng)態(tài)多態(tài)。

  如下面的例子:

  public class Base {

  public void method() {}

  }

  public class Sub extends Base{

  public void method() {}

  }

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

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

  2.1 方法重載與方法覆蓋的相同點(diǎn)

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

  2.2 方法重載與方法覆蓋的不同點(diǎn)

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

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

【Java語(yǔ)言中方法重載與方法覆蓋的異同】相關(guān)文章:

用java重載的方法01-07

Java重載的使用方法04-14

Java重載使用方法03-28

Java中的clone方法08-15

Java語(yǔ)言的構(gòu)造方法07-17

學(xué)習(xí)JAVA語(yǔ)言的方法07-07

Java中String類的方法07-24

JAVA中toString方法詳解03-06

JAVA中終止線程的方法08-12