Java多重继承设计模式?
我有这样的结构:Java多重继承设计模式?,java,android,design-patterns,Java,Android,Design Patterns,我有这样的结构: 第一类 类2扩展类1 我有一堆实用程序类,需要一个Class2来完成各种工作 问题是:我需要创建一个扩展Class2的Class3来使用这些类。Class3将拥有谷歌API的Android地图视图。只能从扩展MapActivity的类创建地图视图。我需要 Class3扩展了Class2和MapActivity。 这是不可能做到的 将class3更改为仅扩展MapActivity需要修改从以前的开发人员那里继承的大量代码(没有双关语) 将我的class3更改为仅扩展Cla
第一类
类2扩展类1
我有一堆实用程序类,需要一个Class2来完成各种工作
问题是:我需要创建一个扩展Class2的Class3来使用这些类。Class3将拥有谷歌API的Android地图视图。只能从扩展MapActivity的类创建地图视图。我需要
Class3扩展了Class2和MapActivity。
这是不可能做到的
将class3更改为仅扩展MapActivity需要修改从以前的开发人员那里继承的大量代码(没有双关语)
将我的class3更改为仅扩展Class2中断,因为映射需要MapActivity
最好的方法是什么
编辑:有几个人提到了“接口解决方案”。听起来是正确的解决方案。不过,我忘了提到Class2是一个抽象类,移动实现的方法将是一件痛苦的事情。大量代码重复。。。这件衣服干了就湿了……:) 由于Java不支持多重继承,因此需要进行变通。如果我是你,我会制作一个接口,定义你需要的所有东西,然后扩展你的
Class1
或
您可以简单地使Class1
extendMapActivity
,除非它已经扩展了其他内容,但只有当Class2
应该扩展MapActivity
时,您才会真正想这样做。您的Class2
可以扩展Class1
,Class3
可以扩展Class1
,Class1
可以扩展MapActivity
希望这有帮助 与其让class 3扩展MapActivity,为什么不尝试实现它呢?
我遇到了一个与您非常相似的问题,并通过使用实现解决了它。从我所看到的情况来看,这个问题最类似于java的解决方案如下所示
JTable
使用TableModel
接口,可以从头开始实现,也可以通过扩展AbstractTableModel
或DefaultTableModel
Class1
的私有字段设计Class3
。然后根据需要实现尽可能多的包装器方法,将所有传入方法传递给内部对象当然,(2)将提供
Class1
的所有行为,但实际上不是Class1
的实例,这可能会破坏系统中的其他内容。这个问题的答案是(再次)更多地利用接口。您能否创建扩展MapActivity的Class4并将Class3用作Class4内部的组合。然后您可以委托给Class3的API。显然,如果不需要访问Class3及更高版本的一些内部构件,这将起作用
如果您需要访问Class3的内部,然后,您可以让Class5扩展Class3来创建API,这有助于克服无法访问内部的限制。是的,Niall C.是对的。我对这一点很陌生,但我知道Java不支持类的多继承,相反,您可以创建一个定义所有要使用的方法和成员的接口,并实现它。是否有任何类
Class1到class3
扩展了“活动”?没有。。。这是问题的一部分,顺便说一句,难以置信你们跳得这么快。我无法想象人们在stackoverflow之前是如何编程的…:)检查此项以获取此问题的解决方案。询问后发现:已尝试。问题是我的Class1扩展了LinearLayout,如果您尝试“extends LinearLayout implements MapActivity”,则会在类之间产生一些冲突(不记得发生了什么冲突)。注意:在其他情况下,这将是一个很好的解决方案。(仅供参考)