JAVA 的重寫與重載

一、重寫(Override)

1、概念

重寫就是子類對父類的允許訪問的方法的實(shí)現(xiàn)過程進(jìn)行重新編寫,返回值和形參是不能改變的。
重寫的優(yōu)點(diǎn)在于子類可以根據(jù)自身需要定義特定于自身的行為,重寫方法是不能拋出新的檢查異常或者比父類更寬泛的異常類型。

public class Animal{
  public void getName(){
    System.out.println("動(dòng)物的名稱");
  }
}
public Cat extends Animal{
  public void getName(){
    System.out.println("貓");
  }
}

public class TestCat{
  public static void main(String[]  args){
    Animal a = new Animal();
    Animal b = new Cat();
    a.getName();
    b.getName();
  }
}
// 運(yùn)行結(jié)果
動(dòng)物的名稱
貓

2、方法重寫的規(guī)則

(1)、參數(shù)列表與被重寫方法的參數(shù)列表必須完全相同;
(2)、返回類型與被重寫方法的返回類型可以不相同,但是必須是父類返回值的派生類;
(3)、訪問權(quán)限不能比父類中被重寫的方法的訪問權(quán)限更低;
(4)、父類的成員方法只能被它的子類重寫;
(5)、生命為 final 的方法不能被重寫;
(6)、子類和父類在同一個(gè)包中,那么子類可以重寫父類除了聲明為 private 和 final 的之外的所有方法;
(7)、子類和父類不在同一個(gè)包中,那么子類只能夠重寫父類聲明為 public 和 protected 的非 final 方法;
(8)、重寫的方法能夠拋出任何非強(qiáng)制異常,無論被重寫的方法是否拋出異常。但是重寫的方法不能拋出新的強(qiáng)制性異常,或者比被重寫方法的更廣泛的強(qiáng)制性異常;
(9)、構(gòu)造方法不能被重寫;
(10)、如果不能繼承一個(gè)累,則不能重寫該類。

二、重載(Overload)

1、概念

重載(overloading)是在一個(gè)類里面,方法和名字相同,而參數(shù)不同,返回類型可以相同也可以不同。
每個(gè)重載的方法都必須有一個(gè)獨(dú)一無二的參數(shù)類型列表。

2、重載規(guī)則

(1)、被重載的方法必須改變參數(shù)列表(參數(shù)的個(gè)數(shù)或者類型不同);
(2)、被重載的方法可以改變返回類型;
(3)、被重載的方法可以改變訪問修飾符;
(4)、被重載的方法可以聲明新的或者更廣的檢查異常;
(5)、方法可以在同一個(gè)類中或者一個(gè)子類中被重載;
(6)、無法已返回執(zhí)類型作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容