将超类的列表转换为子类

时间:2013-08-02 11:22:36

标签: list class encapsulation

我有三个班级A,B,C。

A类有一个返回B类列表的方法。

例如,

A a = new A();

List<B> b = a.getListofA();

B类中还有另一种方法doSomeinB()。 我从B类扩展了C类并在C中添加了一个新方法,doSomeinC(),现在我调用了a.getListofA(),它返回了B的列表,我如何使用doSomeinC()

1 个答案:

答案 0 :(得分:0)

根据你的描述,我已经明白了:

AB的子类 CB的子类。

从您的问题来看,似乎您希望在C类型的对象上使用类B中的方法。这不起作用,因为B不知道C中的方法; B是父类。 C知道B的所有内容,但不是相反。要使用C中的方法,您可以说:

List<C> c = c.getListOfC();
// That's right. You'll need to make this method.
c.doSomeInC();

或者您可以将其称为其父级的实例:

List<B> b = c.getListOfC();

<小时/> 旁注,请看Java Naming Conventions。您的某些方法名称不符合规范,例如:

getListofC --> getListOfC