亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

初始化為父java后調用子類方法

初始化為父java后調用子類方法

holdtom 2022-12-15 14:46:47
這可能(肯定會)聽起來很愚蠢,但我被困住了,我找不到解決問題的合適方法。我有一個超類和兩個子類擴展它。在基于條件的父類上,我想從兩個類中的任何一個調用該方法。這是在一個循環中,所以我決定不做同樣的檢查,而是做一次檢查,從超類創建一個對象,然后將該對象更改為兩個子類之一。IEpublic class Parent{    public void method() {        Parent object=new Parent();        if(a==b) {            object=new Child_A();        }else {            object=new Child_B();        }        for() {            object.method();        }    }    public void method() {        //empty method. need it just to compile    }}public class Child_A extends Parent{    public void method() {        //do something useful    }}public class Child_A extends Parent{    public void method() {          //do something useful    }}我必須編寫 Parent.method(),因為否則編譯會抱怨 Parent 類上沒有 method() 方法。因此,調用的方法不是孩子之一,而是父母方法。我讀過需要將對象直接分配給類,例如Childen_A object=new Childen_A. 問題是我想對兩種情況 ( object.method()) 使用相同的命令,無論它指的是哪個類。奇怪的是,在調試期間,我看到該對象的類型為 Child_A,但調用了 super 方法。我知道解決方案是創建兩個不同的對象,每個子類一個,但這會使我的代碼更難看,我將不得不在循環中使用 if 語句。所以正確的方法必須是public void method() {   for() {       if(a=b) {            Child_A object=new Child_A();            object.method();       }else {            Child_B() object=new Child_B();            object.method();        }    }}有沒有辦法避免循環內的 if 語句?謝謝
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

你的代碼應該是


public class Parent {


    public void method() {


    }


    // OR


    public abstract void method(); // and make the class abstract as well

}


public class Child_A extends Parent {


    @Override

    public void method() {

        //do something useful

    }

}


// same with Child_B


查看完整回答
反對 回復 2022-12-15
  • 1 回答
  • 0 關注
  • 91 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號