1

我正在做一个关于类继承的实用大学工作。我的问题是三个子类中的两个有一个公共方法,它在第三个中不存在,所以我不知道是否最好在不实现的情况下将这个方法添加到超类中(这是一个 void 方法)或分别在两者中实现它类。最好的实施方式是什么?

4

5 回答 5

7

您可以尝试以下方法:

-- Base
    -- Base With Common Method
         -- Class 1
         -- Class 2
    -- Class 3

在 Java 中会是这样的:

public class A {
}
public class B extends A {
    public void commonMethod() { }
}
public class Class1 extends B {
}
public class Class2 extends B {
}
public class Class3 extends A {
}
于 2013-04-10T19:08:38.643 回答
4

您不应该仅仅在实现和重用上使用继承作为标准。如果您在您正在建模的领域的上下文中确实具有真正的“是”关系,请选择它。共享您尝试建模的域以获得更具体的帮助。

于 2013-04-10T19:11:55.237 回答
1

遵循 Pangea 的思想,如果关系不是“是” ,请始终尝试支持组合而不是继承。

于 2013-04-10T20:26:31.897 回答
1

最好的做法是为两个基类添加另一个抽象,并为所有子类添加一个通用抽象。

例如:

      Dog
      Cat
      Bird

      Dog -> FourLegs -> Animal 
      Cat -> FourLegs -> Animal 
      Bird -> Animal

“->”可以是扩展或实现(抽象类或接口)

在任何情况下都不要仅仅因为它方便而给鸟添加四条腿:)

于 2013-04-10T19:13:49.540 回答
1

您可以在基类中添加该方法。如果子类实现此方法,则子类将重载此方法,否则仅使用基类方法。

Smthng like:
Base class: methoda()
SubClass1: methoda() --overloaded
SubClass2: methoda() --second overloaded version
SubClass3: no Implementation --used methoda() of baseclass as no implementation given.
于 2013-04-10T19:13:53.343 回答