java 父類子類有同名方法時(shí)如何調(diào)用的實(shí)現(xiàn)
父類引用默認(rèn)調(diào)用子類重寫的方法
如果父類的引用p指向了子類的實(shí)例,則通過這個(gè)引用p訪問同名方法時(shí),調(diào)用的是子類重寫的方法。
父類引用p可以指向不同的子類,調(diào)用不同子類重寫的不同的同名方法,進(jìn)而達(dá)到類間多態(tài)的效果。
但是,父類的引用只能訪問子類重寫的方法,父類中沒有的方法,父類的引用不能訪問。也就是說,通過父類的引用來調(diào)用子類的方法時(shí),不能訪問到子類后來自己定義的方法。
子類引用默認(rèn)調(diào)用自定義的方法
通過子類的引用訪問同名方法時(shí),默認(rèn)是重寫之后的同名方法。
子類通過super關(guān)鍵字來調(diào)用被隱藏的父類方法
如果還要訪問父類的同名方法,可以使用super關(guān)鍵字來顯示調(diào)用。
多態(tài)
多態(tài)存在的三個(gè)必要條件:要有繼承、要有重寫、父類變量引用子類對象。
重寫原則:兩同兩小一大
兩同:
方法名相同
形參列表要相同
兩小
拋出的異常類型小于等于父類方法拋出的異常類型,也就是要么是原來的異常類型(相等),要么是原來異常類型的子類(更小)
返回值類型要小于等于比父類的返回值類型,也就是要么返回原來的返回值類型(相等),要么是原來的返回值類型的子類(更小)
一大
子類重寫的方法的訪問權(quán)限要大于等于父類方法的訪問權(quán)限:
如果原來的訪問類型為public,則重寫的方法的訪問權(quán)限只能是public。
在Java 8之前,Java接口的方法默認(rèn)使用public abstract修飾,所以實(shí)現(xiàn)接口方法時(shí),訪問權(quán)限只能是public。
重載原則:兩同一不同
兩同
重載發(fā)生在同一個(gè)類中,
跟繼承沒有關(guān)系.
一不同
形參列表不同
如何判斷是重載還是重寫
看形參列表:
當(dāng)方法名相同,形參也相同的時(shí)候,就是重寫,此時(shí)還需要滿足重寫的其他條件,不然就會(huì)出現(xiàn)錯(cuò)誤。
當(dāng)方法名相同,但是形參列表不同的時(shí)候,就是重載
覆蓋和重載的區(qū)別
對形參列表的要求不同
重寫要求形參列表要相同,
而重載要求形參列表不相同
對拋出的異常的要求不同
重寫要求拋出的異常更小或相等
重載對拋出的異常沒有要求
對返回值類型的要求不同
重寫要求返回值類型更小或相等
重載對返回值類型沒有要求
對訪問權(quán)限的要求不同
重寫要求訪問權(quán)限要更大或相等,
而重載對訪問權(quán)限沒有要求
發(fā)生的范圍不同
重寫發(fā)生子類繼承父類的時(shí)候
重載發(fā)生在同一個(gè)類中,和繼承沒有關(guān)系.
重載和重寫的相同點(diǎn)
方法名要相同
補(bǔ)充知識(shí):java中子類繼承父類和實(shí)現(xiàn)接口有同名方法怎么處理
以上這篇java 父類子類有同名方法時(shí)如何調(diào)用的實(shí)現(xiàn)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
public interface MyInterface {
void test();
}
public class Father {
public void test() {
System.out.println("父類方法");
}
}
public class Son extends Father implements MyInterface{}
子類直接繼承父類和實(shí)現(xiàn)接口不實(shí)現(xiàn)接口方法不報(bào)錯(cuò),說明這種情況下默認(rèn)父類實(shí)現(xiàn)該方法
2.我們將父類中方法注釋掉,看看結(jié)果
public interface MyInterface {
void test();
}
public class Father {
// public void test() {
// System.out.println("父類方法");
// }
}

很明顯,子類在繼承過程中出現(xiàn)了錯(cuò)誤提示,需要實(shí)現(xiàn)接口中的方法
3.將父類中方法取消注釋,子類實(shí)現(xiàn)該方法,代碼如下:
public interface MyInterface {
void test();
}
public class Father {
public void test() {
System.out.println("父類方法");
}
}

可以看到,子類方法提示是重寫的父類方法。
至此,驗(yàn)證完畢!
以上這篇java 父類子類有同名方法時(shí)如何調(diào)用的實(shí)現(xiàn)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Java調(diào)用elasticsearch本地代碼的操作方法
- Java魔法堂之調(diào)用外部程序的方法
- Java利用httpclient通過get、post方式調(diào)用https接口的方法
- Java為何需要平衡方法調(diào)用與內(nèi)聯(lián)
- 在java中main函數(shù)如何調(diào)用外部非static方法
- java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實(shí)例)
- Java 使用多線程調(diào)用類的靜態(tài)方法的示例
- Kettle中使用JavaScrip調(diào)用jar包對文件內(nèi)容進(jìn)行MD5加密的操作方法
- 總結(jié)Java調(diào)用Python程序方法
- Java如何對方法進(jìn)行調(diào)用詳解
相關(guān)文章
JAVA基于靜態(tài)數(shù)組實(shí)現(xiàn)棧的基本原理與用法詳解
這篇文章主要介紹了JAVA基于靜態(tài)數(shù)組實(shí)現(xiàn)棧的基本原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了JAVA基于靜態(tài)數(shù)組實(shí)現(xiàn)棧相關(guān)原理、用法與操作注意事項(xiàng),需要的朋友可以參考下2020-03-03
單點(diǎn)登錄的概念及SpringBoot實(shí)現(xiàn)單點(diǎn)登錄的操作方法
在本文中,我們將使用Spring Boot構(gòu)建一個(gè)基本的單點(diǎn)登錄系統(tǒng),我們將介紹如何使用Spring Security和JSON Web Tokens(JWTs)來實(shí)現(xiàn)單點(diǎn)登錄功能,本文假設(shè)您已經(jīng)熟悉Spring Boot和Spring Security,感興趣的朋友一起看看吧2024-10-10
詳解Spring?@Lazy注解為什么能破解死循環(huán)
這篇文章主要來和大家探討一下Spring中的@Lazy注解為什么能破解死循環(huán),文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以了解一下2023-07-07
SpringBoot中的CompletableFuture類詳解
這篇文章主要介紹了SpringBoot中的CompletableFuture類詳解,在?Java8中,引入了CompletableFuture類,它提供了一種簡單而強(qiáng)大的方式來執(zhí)行異步任務(wù),今天我們就來詳細(xì)解讀一下這個(gè)類,需要的朋友可以參考下2023-07-07
IDEA使用技巧之如何將本地項(xiàng)目和git遠(yuǎn)程項(xiàng)目關(guān)聯(lián)
這篇文章主要介紹了IDEA使用技巧之如何將本地項(xiàng)目和git遠(yuǎn)程項(xiàng)目關(guān)聯(lián)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
springboot實(shí)現(xiàn)定時(shí)器(一看即會(huì),非常簡單)
這篇文章主要介紹了springboot實(shí)現(xiàn)定時(shí)器(一看即會(huì),非常簡單),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
SpringBoot 整合 Avro 與 Kafka的詳細(xì)過程
本文介紹了如何在Spring Boot中使用Avro和Kafka進(jìn)行數(shù)據(jù)的序列化和反序列化,并通過MyBatisPlus將數(shù)據(jù)存入數(shù)據(jù)庫,感興趣的朋友跟隨小編一起看看吧2024-12-12
SpringBoot中API接口參數(shù)獲取方式小結(jié)
在Spring Boot中,API接口參數(shù)可以通過多種方式獲取,具體取決于你定義的API接口參數(shù)類型(如路徑參數(shù)、查詢參數(shù)、請求體參數(shù)、請求頭等),本文給大家就介紹了一些常見的參數(shù)獲取方式,需要的朋友可以參考下2024-06-06
springsecurity基于token的認(rèn)證方式
本文主要介紹了springsecurity基于token的認(rèn)證方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

