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)用子類的方法,
好用不?好用!
解決問題了嗎?解決了!
項目中允許使用不?不允許!
我就一直沒有搞懂為什么要用父類調(diào)用子類的方法。如果一定要調(diào)用子類,那為什么要繼承它呢?搞不懂。其實這個問題可以換個角度去理解,父類建立框架,子類在重寫了父類部分的方法后,再調(diào)用從父類繼承的方法,產(chǎn)生不同的結(jié)果(而這正是模板方法模式)。這是不是也可以理解為父類調(diào)用了子類的方法呢?你修改了子類,影響了父類行為的結(jié)果,曲線救國的方式實現(xiàn)了父類依賴子類的場景,模板方法模式就是這種效果。
以上所述是小編給大家介紹的Java父類調(diào)用子類的方法詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
Java+Selenium調(diào)用JavaScript的方法詳解
這篇文章主要為大家講解了java在利用Selenium操作瀏覽器網(wǎng)站時候,有時會需要用的JavaScript的地方,代碼該如何實現(xiàn)呢?快跟隨小編一起學習一下吧2023-01-01
SpringBoot通過@MatrixVariable進行傳參詳解
這篇文章主要介紹了SpringBoot使用@MatrixVariable傳參,文章圍繞@MatrixVariable展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-06-06
基于@RequestBody和@ResponseBody及Stringify()的作用說明
這篇文章主要介紹了基于@RequestBody和@ResponseBody及Stringify()的作用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Java修飾符abstract與static及final的精華總結(jié)
abstract、static、final三個修飾符是經(jīng)常會使用的,對他們的概念必須非常清楚,弄混了會產(chǎn)生些完全可以避免的錯誤,比如final和abstract不能一同出現(xiàn),static和abstract不能一同出現(xiàn),下面我們來詳細了解2022-04-04
Java序列化JSON丟失精度問題的解決方法(修復Long類型太長)
這篇文章主要給大家介紹了關于Java序列化JSON丟失精度問題的解決方法,修復Long類型太長的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-03-03
MyBatis中insert操作返回主鍵的實現(xiàn)方法
在使用MyBatis做持久層時,insert語句默認是不返回記錄的主鍵值,而是返回插入的記錄條數(shù)。這篇文章主要介紹了MyBatis中insert操作返回主鍵的方法,需要的朋友可以參考下2016-09-09
淺談springMVC接收前端json數(shù)據(jù)的總結(jié)
下面小編就為大家分享一篇淺談springMVC接收前端json數(shù)據(jù)的總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
springboot 設置局域網(wǎng)訪問的實現(xiàn)步驟
Spring Boot是一個開源Java-based框架,用于創(chuàng)建獨立的、生產(chǎn)級別的Spring應用,它旨在簡化Spring應用的初始搭建及開發(fā)過程,通過提供各種自動配置的starter包,Spring Boot使得項目配置變得簡單快速,感興趣的朋友一起看看吧2024-02-02

