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

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

在JAVA中創建靈活數據類型的變量

在JAVA中創建靈活數據類型的變量

HUX布斯 2022-06-08 17:11:48
我有class A和。class Bclass C在class C中,我聲明變量如下:private A a;private B b;private ? thirdVariable;我想聲明數據類型可以是 A 或 B的第三個變量。這樣我就可以根據我的意愿分配這個變量的值a或值。b
查看完整描述

3 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

如果 A 和 B 之間沒有關系,則不能這樣做。如果你想這樣做,那么你應該由 A 和 B 擴展的接口/類。


class X{}


class A extends X{

}


class B extends X{

}


private X thirdVariable;

如果您真的想使用 Generic,請在 C 類中使用泛型構造函數,然后A/B根據下面的泛型傳遞對象。


class C<T> {

    private T thirdVariable;


    C(T t) {

        thirdVariable = t;

    }

}

當您創建 C 的對象時,您可以指定并傳遞對象的類型,如下所示。


    A a = new A();

    C<A> c1 = new C<A>(a);

    B b = new B();

    C<B> c2 = new C<B>(b);


查看完整回答
反對 回復 2022-06-08
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

您可以Polymorphism與 an(abstract) class或 an一起使用Interface


Interface:


public Interface Parent{        }


public class A implements Parent {        }


public class B implements Parent {        }


public class C {

    private A a;

    private B b;

    private Parent thirdVariable;

}

(abstract) class:摘要是可選的,取決于您必須制作的設計和功能


public (abstract) class Parent{        }


public class A extends Parent {        }


public class B extends Parent {        }


public class C {

    private A a;

    private B b;

    private Parent thirdVariable;

}


查看完整回答
反對 回復 2022-06-08
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

您可以創建一個(可能是抽象的)超類(讓我們稱之為class X)并創建兩者AB從中擴展。然后,您的第三個變量可以聲明為:

private X thirdVariable;

類似地,您可以創建一個接口(我們稱之為它interface Y)并制作AB實現它。然后,您的第三個變量可以聲明為:

private Y thirdVariable;

所以基本上你想充分利用多態性,因為泛型不夠靈活,無法表達你想要的類型關系。


查看完整回答
反對 回復 2022-06-08
  • 3 回答
  • 0 關注
  • 235 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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