Java入門———Java面向?qū)ο蠼虒W(xué)(Java 重寫(xiě)(Override)與重載(Overload))

Java快速入門(本文篇幅較長(zhǎng),建議點(diǎn)喜歡后收藏后閱讀)
每天學(xué)會(huì)一個(gè)知識(shí)點(diǎn)逛球,覺(jué)得不錯(cuò)的可以留言關(guān)注下千元,戳我主頁(yè)獲取Java資料(工具包,面試資料颤绕,視頻教學(xué)幸海,包含社群解答)

Java 重寫(xiě)(Override)與重載(Overload)

重寫(xiě)(Override)

重寫(xiě)是子類對(duì)父類的允許訪問(wèn)的方法的實(shí)現(xiàn)過(guò)程進(jìn)行重新編寫(xiě)祟身!返回值和形參都不能改變。即外殼不變物独,核心重寫(xiě)袜硫!

重寫(xiě)的好處在于子類可以根據(jù)需要,定義特定于自己的行為挡篓。

也就是說(shuō)子類能夠根據(jù)需要實(shí)現(xiàn)父類的方法婉陷。

在面向?qū)ο笤瓌t里,重寫(xiě)意味著可以重寫(xiě)任何現(xiàn)有方法官研。實(shí)例如下:

class Animal{

   public void move(){
      System.out.println("動(dòng)物可以移動(dòng)");
   }
}

class Dog extends Animal{

   public void move(){
      System.out.println("狗可以跑和走");
   }
}

public class TestDog{

   public static void main(String args[]){
      Animal a = new Animal(); // Animal 對(duì)象
      Animal b = new Dog(); // Dog 對(duì)象

      a.move();// 執(zhí)行 Animal 類的方法

      b.move();//執(zhí)行 Dog 類的方法
   }
}

以上實(shí)例編譯運(yùn)行結(jié)果如下:

動(dòng)物可以移動(dòng)
狗可以跑和走

在上面的例子中可以看到秽澳,盡管b屬于Animal類型,但是它運(yùn)行的是Dog類的move方法阀参。

這是由于在編譯階段肝集,只是檢查參數(shù)的引用類型。

然而在運(yùn)行時(shí)蛛壳,Java虛擬機(jī)(JVM)指定對(duì)象的類型并且運(yùn)行該對(duì)象的方法杏瞻。

因此在上面的例子中,之所以能編譯成功衙荐,是因?yàn)锳nimal類中存在move方法捞挥,然而運(yùn)行時(shí),運(yùn)行的是特定對(duì)象的方法忧吟。

思考以下例子:

class Animal{

   public void move(){
      System.out.println("動(dòng)物可以移動(dòng)");
   }
}

class Dog extends Animal{

   public void move(){
      System.out.println("狗可以跑和走");
   }
   public void bark(){
      System.out.println("狗可以吠叫");
   }
}

public class TestDog{

   public static void main(String args[]){
      Animal a = new Animal(); // Animal 對(duì)象
      Animal b = new Dog(); // Dog 對(duì)象

      a.move();// 執(zhí)行 Animal 類的方法
      b.move();//執(zhí)行 Dog 類的方法
      b.bark();
   }
}

以上實(shí)例編譯運(yùn)行結(jié)果如下:

TestDog.java:30: cannot find symbol
symbol  : method bark()
location: class Animal
                b.bark();

該程序?qū)伋鲆粋€(gè)編譯錯(cuò)誤砌函,因?yàn)閎的引用類型Animal沒(méi)有bark方法。

方寫(xiě)重寫(xiě)的規(guī)則

  • 參數(shù)列表必須完全與被重寫(xiě)方法的相同溜族;
  • 返回類型必須完全與被重寫(xiě)方法的返回類型相同讹俊;
  • 訪問(wèn)權(quán)限不能比父類中被重寫(xiě)的方法的訪問(wèn)權(quán)限更高。例如:如果父類的一個(gè)方法被聲明為public煌抒,那么在子類中重寫(xiě)該方法就不能聲明為protected仍劈。
  • 父類的成員方法只能被它的子類重寫(xiě)。
  • 聲明為final的方法不能被重寫(xiě)寡壮。
  • 聲明為static的方法不能被重寫(xiě)贩疙,但是能夠被再次聲明。
  • 如果一個(gè)方法不能被繼承况既,那么該方法不能被重寫(xiě)这溅。
  • 子類和父類在同一個(gè)包中,那么子類可以重寫(xiě)父類所有方法棒仍,除了聲明為private和final的方法悲靴。
  • 子類和父類不在同一個(gè)包中,那么子類只能夠重寫(xiě)父類的聲明為public和protected的非final方法降狠。
  • 重寫(xiě)的方法能夠拋出任何非強(qiáng)制異常对竣,無(wú)論被重寫(xiě)的方法是否拋出異常庇楞。但是,重寫(xiě)的方法不能拋出新的強(qiáng)制性異常否纬,或者比被重寫(xiě)方法聲明的更廣泛的強(qiáng)制性異常吕晌,反之則可以。
  • 構(gòu)造方法不能被重寫(xiě)临燃。
  • 如果不能繼承一個(gè)方法睛驳,則不能重寫(xiě)這個(gè)方法。

Super關(guān)鍵字的使用

當(dāng)需要在子類中調(diào)用父類的被重寫(xiě)方法時(shí)膜廊,要使用super關(guān)鍵字乏沸。

class Animal{

   public void move(){
      System.out.println("動(dòng)物可以移動(dòng)");
   }
}

class Dog extends Animal{

   public void move(){
      super.move(); // 應(yīng)用super類的方法
      System.out.println("狗可以跑和走");
   }
}

public class TestDog{

   public static void main(String args[]){

      Animal b = new Dog(); /
      b.move(); //執(zhí)行 Dog類的方法

   }
}

以上實(shí)例編譯運(yùn)行結(jié)果如下:

動(dòng)物可以移動(dòng)
狗可以跑和走

重載(Overload)

重載(overloading) 是在一個(gè)類里面,方法名字相同爪瓜,而參數(shù)不同蹬跃。返回類型呢?可以相同也可以不同铆铆。
每個(gè)重載的方法(或者構(gòu)造函數(shù))都必須有一個(gè)獨(dú)一無(wú)二的參數(shù)類型列表蝶缀。
只能重載構(gòu)造函數(shù)
重載規(guī)則

  • 被重載的方法必須改變參數(shù)列表;
  • 被重載的方法可以改變返回類型薄货;
  • 被重載的方法可以改變?cè)L問(wèn)修飾符翁都;
  • 被重載的方法可以聲明新的或更廣的檢查異常;
  • 方法能夠在同一個(gè)類中或者在一個(gè)子類中被重載谅猾。
    實(shí)例
public class Overloading {
 
    public int test(){
        System.out.println("test1");
        return 1;
    }
 
    public void test(int a){
        System.out.println("test2");
    }   
 
    //以下兩個(gè)參數(shù)類型順序不同
    public String test(int a,String s){
        System.out.println("test3");
        return "returntest3";
    }   
 
    public String test(String s,int a){
        System.out.println("test4");
        return "returntest4";
    }   
 
    public static void main(String[] args){
        Overloading o = new Overloading();
        System.out.println(o.test());
        o.test(1);
        System.out.println(o.test(1,"test3"));
        System.out.println(o.test("test4",1));
    }
}

重寫(xiě)與重載之間的區(qū)別

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柄慰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子税娜,更是在濱河造成了極大的恐慌坐搔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敬矩,死亡現(xiàn)場(chǎng)離奇詭異薯蝎,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)谤绳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)袒哥,“玉大人缩筛,你說(shuō)我怎么就攤上這事”こ疲” “怎么了瞎抛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)却紧。 經(jīng)常有香客問(wèn)我桐臊,道長(zhǎng)胎撤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任断凶,我火速辦了婚禮伤提,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘认烁。我一直安慰自己肿男,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布却嗡。 她就那樣靜靜地躺著舶沛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窗价。 梳的紋絲不亂的頭發(fā)上如庭,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音撼港,去河邊找鬼坪它。 笑死,一個(gè)胖子當(dāng)著我的面吹牛餐胀,可吹牛的內(nèi)容都是我干的哟楷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼否灾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼卖擅!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起墨技,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惩阶,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后扣汪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體断楷,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年崭别,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冬筒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茅主,死狀恐怖舞痰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诀姚,我是刑警寧澤响牛,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響呀打,放射性物質(zhì)發(fā)生泄漏矢赁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一贬丛、第九天 我趴在偏房一處隱蔽的房頂上張望撩银。 院中可真熱鬧,春花似錦瘫寝、人聲如沸蜒蕾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)咪啡。三九已至,卻和暖如春暮屡,著一層夾襖步出監(jiān)牢的瞬間撤摸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工褒纲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留准夷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓莺掠,卻偏偏與公主長(zhǎng)得像衫嵌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子彻秆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容