3 回答

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);

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;
}

TA貢獻1842條經驗 獲得超22個贊
您可以創建一個(可能是抽象的)超類(讓我們稱之為class X
)并創建兩者A
并B
從中擴展。然后,您的第三個變量可以聲明為:
private X thirdVariable;
類似地,您可以創建一個接口(我們稱之為它interface Y
)并制作A
并B
實現它。然后,您的第三個變量可以聲明為:
private Y thirdVariable;
所以基本上你想充分利用多態性,因為泛型不夠靈活,無法表達你想要的類型關系。
添加回答
舉報