文章目錄
- 前言
- 一、在Java中什么是“重寫”?
- 二、關于重寫的剛性需求
- 三、代碼演示
- 重寫方法的呼叫順序
- 小結
- 四、方法重寫和多載的主要區別(重點!!!!!!)
- 總結
前言
今年是2021年2月4日,是我們的小年,在這里給大家拜個小年,各位小年快樂!!!在這個舉國同慶的日子里我想給大家分享一個學Java必須掌握的、重要的東西——重寫
一、在Java中什么是“重寫”?
在繼承中,子類可以定義和父類相同的名稱且引數串列一致(引數串列可以理解成個數相同,型別相同,引數的排列順序相同)一致的函式,在Java中看是不可思議,但是這是有一個大前提的那就是在繼承的這個前提下,說簡單通俗一點,重寫就是在子類中從新定義父類中已有的方法,
二、關于重寫的剛性需求
1、在子類中的重寫方法和父類中被重寫方法,這兩個方法名稱還有引數串列(引數串列可以理解成個數相同,型別相同,引數的排列順序相同)必須相同,
2、子類中重寫方法的訪問權限必須大于或者等于父類中被重寫方法的訪問權限,否則編譯會報錯,(public>protected>default(什么都不寫,默認)>private)
3、子類重寫方法的回傳值型別必須是父類中方法的回傳值型別或該型別的子類,不能回傳比父類更大的資料型別,
4、子類中重寫方法不能比父類中被重寫方法產生更多的例外型別,
5、父類的建構式是不能被子類繼承的,因此不能在子類中重寫,但是,子類中可以使用**super(叫超類,也叫父類)**關鍵字訪問父類中的建構式,
三、代碼演示
重寫方法的呼叫順序
子類重寫重寫后的方法體的第一行默認呼叫父類重寫的方法且子類呼叫方法時遵循最近原則
1、先創建一個父類,父類中有一個輸出內容的方法
代碼如下(示例):
public class Father {
// 定義了一個方法,說了一句話
public void sayWord() {
System.out.println("我是Father里的sayWord方法");
}
}
2、再創建一個子類重寫父類中的sayWord方法
// 使用extends關鍵字,讓子類Son與父類Father,形成繼承關系
public class Son extends Father {
@Override
public void sayWord() {
super.sayWord();//默認呼叫父類的sayWord方法,可以洗掉不要
System.out.println("我是Son里的sayWord方法");
}
}
3、測驗————>輸出
代碼如下(測驗):
public class Test01 {
public static void main(String[] args) {
Father father = new Father(); // 根據父類Father創建一個father物件
father.sayWord(); // 呼叫father物件中的sayWord方法
System.out.println("------這是一潭訓麗的分割線-------");
Son son = new Son(); //根據子類Son創建一個son物件
son.sayWord(); // 呼叫son物件中重寫父類的sayWord方法
}
}
代碼如下(輸出):
我是Father里的sayWord方法
------這是一潭訓麗的分割線-------
我是Father里的sayWord方法
我是Son里的sayWord方法
小結
從上面的子類父類中我們都看見他們都有一個sayWord方法,不同的是子類的sayWord方法是從父類中繼承過來的,且是被在子類中修改過的,所以在輸出的東西不是一樣的,而輸出結果最后子類中為什么還會有父類中的“我是Father里的sayWord方法”這個是super.sayWord()(默認呼叫父類的sayWord方法),是可以洗掉不要的,其實基本這個東西都是需要洗掉的,這就是一個在子類中呼叫父類的方法,格式為 super.方法名()
四、方法重寫和多載的主要區別(重點!!!!!!)
1、重寫特點:函式名必須相同、引數串列必須相同、子類的回傳值型別要等于或者小于父類的回傳值型別等,子類的作用域不能大于父類中方法的作用域,子類拋出的例外型別不能大于中父類中方法拋出的例外型別,
2、多載的特點:函式名相同,引數串列不同,與訪問控制符、回傳值型別等無關,
3、重寫用于繼承關系的父子類中,不能用于同一類中,而多載通常用于同一類中,
4、重寫用于更改父類種方法的行為或者實作介面的方法,而多載用于為一個行為提供多種實作方式,
總結
其實這些東西只要寫得多了,對于重寫和多載的理解自然而然的就慢慢熟了,不需要特別的去死記硬背,最后最后祝大家2021小年快樂,走過的點個贊,博主必回訪的呦!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/256785.html
標籤:java
上一篇:3.6 執行緒通信
