我正在做关于类继承的实用大学工作。我的问题是三个子类中有两个有一个常见的方法,它不存在于第三个子类中,所以我不知道是否最好在没有实现的情况下在超类中添加此方法(它是一个void方法)或者在两者中分别实现它类。最好的方法是什么?
答案 0 :(得分: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 {
}
答案 1 :(得分:4)
您不应仅仅将继承用于实现和重用作为标准。如果您在建模的域的上下文中确实存在真正的“是”关系,请选择它。分享您尝试建模的域名以获得更具体的帮助。
答案 2 :(得分:1)
最好的办法是为两个基类添加另一个抽象,并为所有子类提供一个通用抽象。
例如:
Dog
Cat
Bird
Dog -> FourLegs -> Animal
Cat -> FourLegs -> Animal
Bird -> Animal
“ - >” 中可以是扩展或实现(抽象类或接口)
在任何情况下都不要因为方便而在鸟类上添加四条腿:)
答案 3 :(得分: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.
答案 4 :(得分:1)
根据Pangea的想法,如果关系不是“是一个”,那么总是尝试支持组合优于继承。