纯粹使用继承来共享通用功能

时间:2010-03-10 14:35:35

标签: oop

我最近遇到了一些我正在处理的代码中的情况,这对我来说没有意义。一组类继承自基类,纯粹是为了在基类中共享一些方法。没有方法覆盖,只有子类从父类调用方法。

在我看来,通过让子类引用父类而不是继承它来更好地建模,我认为这会减少不必要的复杂性。这是合理的,还是我错过了使用像这样的继承的一些好处?

4 个答案:

答案 0 :(得分:3)

你是对的。不幸的是,当实际上不需要继承时,继承会被大量使用。

如果子类和父类之间没有is-a关系,则不应使用继承。

答案 1 :(得分:3)

如果父类方法纯粹是“实用”,那么是的,我同意。

问题(至少对我来说),如果将来可以修改父类以获得好处。意思是,逻辑上目前的关系是什么?如果它是孩子和父母之间的“是”,那么就离开它。如果父级只是方法的集合,则重构为实用程序类或使用委托。

答案 2 :(得分:3)

继承可以以不同的方式使用(和滥用!)。这是三大类。

  

概念层次结构:

     

概念上相关的类可以   组织成专业化   层次结构:

     
      
  • 人员,员工,经理
  •   
  • 几何对象......
  •   
     

<强>多形性:

     

具有鲜明但相关的对象   类可以统一处理   客户端

     
      
  • 几何对象数组
  •   
     

软件重用:

     

相关类可以共享接口,   数据结构或行为。

     
      
  • 几何对象......
  •   

要完整研究不同形式的遗产,请阅读On the notion of inheritance

您提到的情况是软件重用。没有是-a 关系,最多只有 has-a 关系。目标主要是重用相同的代码。

如您所知,这可以通过委托重构,如果方法基本上是静态的,甚至可以重构为实用程序类。

答案 3 :(得分:0)

我可以假设您可以观察到的继承只是重构的结果。