有库类B和C,都从类A继承。我有2个类扩展B & C,即MyB & MyC。Java多继承,摆脱重复代码
A
/\
B C
/ \
MyB MyC
MyB
& MyC
共享大量的公共代码,它们只是略有不同。
我想摆脱重复的代码,我怎么能在java中做到这一点?在C++中有可能通过创建一个共同的基类,并把一切,这是常见的,如下所示:
A
/\
B C
\/
MyBase
/\
MyB MyC
有库类B和C,都从类A继承。我有2个类扩展B & C,即MyB & MyC。Java多继承,摆脱重复代码
A
/\
B C
/ \
MyB MyC
MyB
& MyC
共享大量的公共代码,它们只是略有不同。
我想摆脱重复的代码,我怎么能在java中做到这一点?在C++中有可能通过创建一个共同的基类,并把一切,这是常见的,如下所示:
A
/\
B C
\/
MyBase
/\
MyB MyC
你可以使用composition:
一个类只能从一个类扩展。但是,您可以实现多个接口。
而不是在这些类中拥有所有的逻辑,而是拥有类D
中的所有通用逻辑。现在让它成为MyC
和MyB
,每个成员都是D
的实例。这就是所谓的composition。
在Java中,你会使用的东西线沿线的:
组成(图形) “在” MyBase
封装的B
和C
实例。
重构B
和C
(如有必要),露出一个单独的接口,说IB
和IC
MyBase
以实现多个接口:IB
和IC
,通过“做正确的事”,以地图的接口方法到内部B
和C
实例。
MyB
和MyC
实现适当的接口,并将调用映射到MyBase
。
检查了这一点:http://stackoverflow.com/questions/17226364/java-alternative-to-multiple-inheritance – jsedano