2013-04-10 152 views
1

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

回答

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 { 
} 
4

你不应该在实现中使用纯粹的继承和重用为准则。选择它,如果你真的有一个真正的“是一个”关系在您建模的域的上下文中。分享您尝试建模的域以获取更具体的帮助。

1

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

例如:

 Dog 
     Cat 
     Bird 

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

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

在任何情况下都不要四个腿添加到鸟,只是因为它的方便:)

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. 
1

继盘古的思想,总是试图青睐组成了继承如果关系不是“是”。