2013-04-10 45 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

繼盤古的思想,總是試圖青睞組成了繼承如果關係不是「是」。