java父类调用子类方法_Java 中父类怎么调用子类的方法?
父類能調(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è)角度去理解,父類建立框架,子類在重寫(xiě)了父類部分的方法后,再調(diào)用從父類繼承的方法,產(chǎn)生不同的結(jié)果(而這正是模板方法模式)。這是不是也可以理解為父類調(diào)用了子類的方法呢?你修改了子類,影響了父類行為的結(jié)果,曲線救國(guó)的方式實(shí)現(xiàn)了父類依賴子類的場(chǎng)景,模板方法模式就是這種效果。
---------------------
作者:溫柔狠角色
原文:https://blog.csdn.net/qq_25827845/article/details/52916513
總結(jié)
以上是生活随笔為你收集整理的java父类调用子类方法_Java 中父类怎么调用子类的方法?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: 开启php缩略图,PHP生成缩略图
 - 下一篇: c语言程序设计报告用于医院食品加工等部,