使用两种仅用于继承的方法创建一个小类是不是一个糟糕的设计?

时间:2012-07-22 09:27:17

标签: oop inheritance

我想用两个方法创建一个类,除此之外别无其他目的我可以创建两个继承方法的子类。这个类不能单独运行。这是一个糟糕的编程设计或习惯吗?

3 个答案:

答案 0 :(得分:2)

甚至有些类除了让其他类派生它之外什么都不做。超类是否可以自己拥有有用的实例并不重要。仅存在于其他类派生的类通常称为抽象类;某些语言(如C ++)也具有语法功能,以允许编译器在尝试从抽象类创建对象时出错。因此,拥有这样的课程并不是那么糟糕。

除此之外,什么是“不良做法”?如果设置使代码更容易理解,那么它就不错了。

当然,如果您打算派生的两个类实际上没有任何共同点,那么这两个方法只是“嘿,我注意到该类中的10行代码与这10行代码相同其他类“,然后将其变成一个共同的超类可能会比帮助更混乱。类仍然应该有某种形式的关系。如果它只是共享一些随机出现的代码,那么独立函数可能是更好的选择。

基本上,查看类的名称。如果你的新超类被命名为“一些非常通用的名称',因为我不知道它是什么”,那么它可能不是“好的设计”。另一方面,如果你有一个超类的正确名称,并且派生类的名称仍然是与超类有“种”关系的东西,那么它可能不是一件坏事。

当你开始使用指向超类的指针时,另一个强烈暗示“好”的东西,因为你不关心你是在处理一个还是另一个子类。

答案 1 :(得分:0)

这是一个好习惯,它可以更好地组织功能。另一个原因是你可以只看一下继承树,并知道它与两个函数类有关。它没有太大的危害。

答案 2 :(得分:0)

  1. 一般而言,没有固有的好坏。这在很大程度上取决于具体情况。但是,一般来说,您应该始终尝试遵循面向对象的原则。例如,无论何时创建类,无论是抽象类还是具体类,该类都应具有数据行为。这条规则非常重要,它一直是面向对象的基础。没有数据的类只是一堆方法(这是程序编程,而不是OO)。没有行为的类是一堆变量(再次是程序性的,而不是OO)。因此,将数据和行为放在一起非常重要。但是,它们应该彼此具有逻辑关系,而不是随机组合在一起。例如,方法应该以某种方式访问​​数据。
  2. 当然,这条规则有偏差。例如,您可能只有一堆静态类中的方法(如Java中的Math类),或者只是接口中的一堆constanst。但是,它们是例外而不是规则。为方便起见,它们出于必要而存在。在严格的面向对象意义上,它们不是真正的类。

    所以,总是瞄准正确的原则,只有在没有其他方法可以完成时才会偏离,并且只作为例外,而不是作为规则。

    1. 前一点是指如何构建一个类。为了设计类之间的关系,应该遵循逻辑路径。仔细考虑您正在处理的每个概念,看看每个概念是否有意义,然后看看这些类之间的关系是什么。如果它看起来你有三个可以在继承中组织的概念 - 两个派生自父类的类,那就是它。如果父类有两个方法,那就ok了。即使它有一种方法,它仍然可以。只要它代表一个连贯的逻辑单元。