Java中父類怎么調(diào)用子類的方法
父類能調(diào)用子類的方法嗎?
答:能。
怎么做?
- 把子類傳遞到父類的有參構(gòu)造中,然后調(diào)用。
- 使用反射的方式調(diào)用,你使用了反射還有誰不能調(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)用子類的方法,
好用不?好用!
解決問題了嗎?解決了!
項(xiàng)目中允許使用不?不允許!
我就一直沒有搞懂為什么要用父類調(diào)用子類的方法。如果一定要調(diào)用子類,那為什么要繼承它呢?搞不懂。其實(shí)這個(gè)問題可以換個(gè)角度去理解,父類建立框架,子類在重寫了父類部分的方法后,再調(diào)用從父類繼承的方法,產(chǎn)生不同的結(jié)果(而這正是模板方法模式)。這是不是也可以理解為父類調(diào)用了子類的方法呢?你修改了子類,影響了父類行為的結(jié)果,曲線救國的方式實(shí)現(xiàn)了父類依賴子類的場(chǎng)景,模板方法模式就是這種效果。
以上所述是小編給大家介紹的Java父類調(diào)用子類的方法詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Struts2通過自定義標(biāo)簽實(shí)現(xiàn)權(quán)限控制的方法
這篇文章主要介紹了Struts2通過自定義標(biāo)簽實(shí)現(xiàn)權(quán)限控制的方法,介紹了定義Struts2的自定義標(biāo)簽的三個(gè)步驟以及詳細(xì)解釋,需要的朋友可以參考下。2017-09-09
SpringBoot + 微信公眾號(hào)JSAPI支付功能的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot + 微信公眾號(hào)JSAPI支付功能的實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Java中HashMap和Hashtable的區(qū)別淺析
這篇文章主要介紹了Java中HashMap和Hashtable的區(qū)別淺析,本文總結(jié)了6條它們之間的不同之處,需要的朋友可以參考下2015-03-03
SpringBoot自動(dòng)配置之自定義starter的實(shí)現(xiàn)代碼
這篇文章主要介紹了SpringBoot自動(dòng)配置之自定義starter的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法
本文主要介紹了mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法,這個(gè)錯(cuò)誤一般發(fā)生在mysql 5.7以及 5.7以上的版本中,本文就來介紹一下兩種解決方法,感興趣的可以了解一下2023-09-09
spring cloud升級(jí)到spring boot 2.x/Finchley.RELEASE遇到的坑
這篇文章主要介紹了spring cloud升級(jí)到spring boot 2.x/Finchley.RELEASE遇到的坑,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08
SpringBoot實(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-10
SpringBoot中YAML語法及幾個(gè)注意點(diǎn)說明
這篇文章主要介紹了SpringBoot中YAML語法及幾個(gè)注意點(diǎn)說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02

