要显示项目树,我编写了引用自己的类:
CTree
{
String name;
CGroupOfItems[] groups
CGroupOfItems[] getGroups();
//... and more getter and setter methods
}
CGroupOfItems
{
String name;
CItem[] items;
CItems[] getItems();
//... and more getter and setter methods
}
CItem
{
String name;
CItem[] childItems;
CItems[] getChildItems();
//... and more getter and setter methods
}
有了这个我管理的树木如下:
tree
-group 1
- item 1.1
- item 1.1.1
- item 1.1.1.1
- item 1.1.2
- item 1.2
- group 2
- item 2.1
.....
现在,对于其他一些功能,我想管理其成员提供更多数据的树:
CTreeBig
{
String name;
int id;
String additionalData;
CGroupOfItemsBig[] groups
CGroupOfItemsBig[] getGroups();
//... and more getter and setter methods
}
CGroupOfItemsBig
{
String name;
int id;
String additionalData;
CItemBig[] items;
CItemBig[] getItems();
//... and more getter and setter methods
}
CItemBig
{
String name;
int id;
String additionalData;
CItemBig[] childItems;
CItemBig[] getChildItems();
//... and more getter and setter methods
}
现在我想从CTree扩展CTreeBig。 但这是不可能的,因为我无法覆盖
CGroupOfItems[] getGroups();
使用:
CGroupOfItemsBig[] getGroups();
任何人都可以告诉我如何使用Java-Extension来解决这个问题。 至少需要从Object CTreeBig获取Object CTree。
当然我可以手动编写代码,但实际上我的课程更复杂,我不仅会有两个类CTree,而且可能是4或5 ......
提前致谢
吉奥
答案 0 :(得分:0)
您滥用或误解了继承和多态性。无需重写CGroupOfItems [] getGroups()。您只需以适合CGroupOfItemsBig的方式实现它,但返回类型是CGroupOfItems,因为CGroupOfItemsBig“是一个”CGroupOfItems。但我怀疑在这里理解语言还有一个更深层次的问题。也许这会有所帮助:http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html