Java中父類怎么調(diào)用子類的方法
父類能調(diào)用子類的方法嗎?
答:能。
怎么做?
- 把子類傳遞到父類的有參構(gòu)造中,然后調(diào)用。
- 使用反射的方式調(diào)用,你使用了反射還有誰(shuí)不能調(diào)用的?!
- 父類調(diào)用子類的靜態(tài)方法。
案例展示:
package com.ywq; public class Test2{ public static void main(String[] args) { Son son = new Son(); Father father=new Father(son); father.fun1(); father.fun4(); } } class Father{ public Son son; public Father(Son son){ this.son=son; } public Father() { } public void fun4(){ //方法3:使用反射的方式調(diào)用子類方法 try { Class cls=Class.forName("com.ywq.Son"); Son son=(Son) cls.newInstance(); son.fun2(); } catch (Exception e) { e.printStackTrace(); } } public void fun1(){ //方法1:把子類傳遞到父類的有參構(gòu)造函數(shù)中,然后調(diào)用。 System.out.println("我是父類的方法"); son.fun2(); //方法2:父類調(diào)用子類的靜態(tài)方法。 Son.fun3(); } } class Son extends Father{ public static void fun3(){ System.out.println("我是子類的靜態(tài)方法"); } public void fun2(){ System.out.println("我是子類的方法"); } }
這三種都是父類直接調(diào)用子類的方法,
好用不?好用!
解決問(wèn)題了嗎?解決了!
項(xiàng)目中允許使用不?不允許!
我就一直沒(méi)有搞懂為什么要用父類調(diào)用子類的方法。如果一定要調(diào)用子類,那為什么要繼承它呢?搞不懂。其實(shí)這個(gè)問(wèn)題可以換個(gè)角度去理解,父類建立框架,子類在重寫了父類部分的方法后,再調(diào)用從父類繼承的方法,產(chǎn)生不同的結(jié)果(而這正是模板方法模式)。這是不是也可以理解為父類調(diào)用了子類的方法呢?你修改了子類,影響了父類行為的結(jié)果,曲線救國(guó)的方式實(shí)現(xiàn)了父類依賴子類的場(chǎng)景,模板方法模式就是這種效果。
以上所述是小編給大家介紹的Java父類調(diào)用子類的方法詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Struts2通過(guò)自定義標(biāo)簽實(shí)現(xiàn)權(quán)限控制的方法
這篇文章主要介紹了Struts2通過(guò)自定義標(biāo)簽實(shí)現(xiàn)權(quán)限控制的方法,介紹了定義Struts2的自定義標(biāo)簽的三個(gè)步驟以及詳細(xì)解釋,需要的朋友可以參考下。2017-09-09SpringBoot + 微信公眾號(hào)JSAPI支付功能的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot + 微信公眾號(hào)JSAPI支付功能的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03SpringBoot靜態(tài)資源路徑配置及主頁(yè)顯示
這篇文章主要介紹了SpringBoot靜態(tài)資源路徑配置及主頁(yè)顯示,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Java中HashMap和Hashtable的區(qū)別淺析
這篇文章主要介紹了Java中HashMap和Hashtable的區(qū)別淺析,本文總結(jié)了6條它們之間的不同之處,需要的朋友可以參考下2015-03-03SpringBoot自動(dòng)配置之自定義starter的實(shí)現(xiàn)代碼
這篇文章主要介紹了SpringBoot自動(dòng)配置之自定義starter的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法
本文主要介紹了mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法,這個(gè)錯(cuò)誤一般發(fā)生在mysql 5.7以及 5.7以上的版本中,本文就來(lái)介紹一下兩種解決方法,感興趣的可以了解一下2023-09-09spring cloud升級(jí)到spring boot 2.x/Finchley.RELEASE遇到的坑
這篇文章主要介紹了spring cloud升級(jí)到spring boot 2.x/Finchley.RELEASE遇到的坑,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08SpringBoot實(shí)現(xiàn)郵件任務(wù)的步驟詳解
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)郵件任務(wù)的步驟詳解,使用Spring Boot實(shí)現(xiàn)QQ郵箱發(fā)送郵件具有快速集成、統(tǒng)一的開發(fā)體驗(yàn)、強(qiáng)大的維護(hù)和擴(kuò)展能力、可靠的送達(dá)性和安全性等優(yōu)勢(shì),可以幫助你快速構(gòu)建穩(wěn)定可靠的郵件發(fā)送功能,需要的朋友可以參考下2023-10-10SpringBoot中YAML語(yǔ)法及幾個(gè)注意點(diǎn)說(shuō)明
這篇文章主要介紹了SpringBoot中YAML語(yǔ)法及幾個(gè)注意點(diǎn)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02