Java多重继承,摆脱重复的代码

时间:2013-07-24 16:07:15

标签: java multiple-inheritance

有库类B和C,都继承自A类。我有2个类扩展B& C,即MyB& MYC的。

    A
   / \    
  B   C 
 /     \
MyB   MyC

MyB& MyC分享了许多常用代码,它们只是略有不同。

我想摆脱重复的代码,我怎么能在java中做到这一点?在C ++中,可以通过创建一个公共基类并将其中常见的所有内容放入其中,如下所示:

    A
   / \  
  B   C 
   \ /
  MyBase
   / \
 MyB MyC

4 个答案:

答案 0 :(得分:25)

您可以使用composition

  • 使用公共代码
  • 创建一个新类MyCommon
  • 在MyB和MyC中添加MyCommon实例,并将工作委托给MyCommon。

答案 1 :(得分:3)

不要在这些类中拥有所有逻辑,而是在类D中拥有所有通用逻辑。现在,使MyCMyB每个都有一个D实例的成员。这叫做composition

答案 2 :(得分:1)

一个类只能从一个类扩展。但是,您可以实现多个接口。

答案 3 :(得分:1)

在Java中,您将使用以下内容:

  1. B中封装CMyBase“的实例的组合(模式)。

  2. 重构BC(如有必要)公开单独的界面,例如IBIC

  3. MyBase实现多个接口:IBIC,通过“做正确的事”将接口上的方法映射到内部B和{{ 1}}实例。

  4. CMyB实施适当的界面,并将调用映射到MyC