如何在java中使用接口实现多继承?

时间:2011-11-28 06:08:12

标签: java multiple-inheritance

我需要在Java中模仿多继承。它可能是错误的设计,但是,由于我的问题不是(父)类功能,我无法用接口模仿该功能。 这是对问题的更多描述。 我有一个名为AbstractModel.java的类,有许多方法。另一方面,还有另一个班级AbstractTableModel.java。现在假设有一个名为table controller.java的类处理AbstractModel.java,另一方面有一个名为Tableview的类.java处理AbstractTableModel.java。我需要以某种方式来定义:公共类A扩展AbstractModelAbstracTableModel,以便视图和控制器都可以使用具有扩展名的相同类。请注意,解决方案AbstractTableModel.java extends AbstractModel不是解决方案,因为它是内置的java类。

谢谢。

2 个答案:

答案 0 :(得分:1)

您无法直接在Java中执行此操作,但可以使用delegation design pattern。看here。这是一个非常类似的问题。

答案 1 :(得分:0)

更改需要AbstractTableModel的代码,以便它接受TableModel代替(这是AbstractTableModel实现的接口)。无论如何应该这样做。当你可以依赖于接口时,永远不要依赖具体的实现。

然后,您可以轻松地让课程AbstractModel实施TableModel

您可能还应该考虑为AbstractModel创建一个界面。通常会创建一个接口X,一个抽象基础实现AbstractX,它提供所有实现共享的通用功能,以及实现MyXYourX等。只有具体的实现(但不一定所有这些都知道并依赖于AbstractX,但没有这个层次结构之外的代码。

Java Collections Framework就是一个很好的例子:例如ListAbstractListArrayListLinkedList,但没有实际依赖的代码在AbstractList上。列表中的大多数用户只使用任何List,或者如果出于某种原因需要具体实现,则他们依赖于此。