2012-01-30 121 views
1

的方法在Java中,我有父母class P和孩子class C.類型檢查的子類

抽象類,我有一個方法void blah(P parent)。在抽象類的子類中,它不通過void blah(C child)進行編譯。

如何在子類中實現類型檢查?

+0

+1。我認爲這在泛型中可能部分可行,但可能不是一個真正令人滿意的方式。畢竟,它有點違背了利斯科夫的替代原則。等待已經嘗試過的人的好回答。 – Thilo 2012-01-30 03:47:39

回答

4

void blah(P parent)void blah(C child)實際上是不同的方法。這就是爲什麼你不能使用C子類來重寫一個抽象的P父類方法。

所以,在你的子類的抽象類,您可以

void blah(P parent){ 
    if(parent instanceof C){ 
    ... 
    }else if(parent instanceof C2){ 

    } 
} 

或者只是分別實現這兩個方法。

1

我建議你使用父類型參數而不是子參數。如果你使用它,你可以通過任何實現或抽象類,它會讓你的代碼可重用。

在你的情況下,你有兩種不同的方法,這是不是重寫的方法。