2014-03-30 54 views
1

我正在用Java编写项目。 我有一个结构,我有对象A,B和C的实例,所有这些扩展父类。如何参考子实例的父项

我想要一个所有父类型对象的列表 - 即我想在这个列表中存储任何类型为A,B或C的对象。

我创建了一个列表类的功能

private class Item 
{ 
    private Parent parent; 

    public void addItem(Parent set){ /* adds set to the list */}; 
} 

我最初的想法是做这样的事情:

A a = new A(); B b = new B(); 
addItem(a); 
addItem(b); 

但A和B都没有父母,他们是A和学士学位。

有人可以提出一种方法,能够添加As,Bs,Cs ......的实例到父母列表中吗?

+2

你需要修改你的帖子。上半场与下半场相矛盾。 –

+1

你说A,B和C扩展了Parent,这意味着在继承树中,A,B和C都是父类的所有子类。因此,如果你在开头说的是真的,你的addItem(a);代码将起作用。 –

回答

0

我相信你的意思是你如何将a,b,c变形为它们的父超类型?那么,因为他们为父类型子类型,你定义的add方法应该隐式地将你的子类型转换为父类型。

否则你如何明确地指亚型的父类是使用类型转换的表达......它是这样表示:

T_Parent varname = (T_Parent) Name_Subclass;