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条经验 获得超21个赞
您可以创建一个(可能是抽象的)超类(让我们称之为class X
)并创建两者A
并B
从中扩展。然后,您的第三个变量可以声明为:
private X thirdVariable;
类似地,您可以创建一个接口(我们称之为它interface Y
)并制作A
并B
实现它。然后,您的第三个变量可以声明为:
private Y thirdVariable;
所以基本上你想充分利用多态性,因为泛型不够灵活,无法表达你想要的类型关系。
添加回答
举报