我想執行,在子類的函數是類從抽象父類型。例如:聲明的子類型變量的抽象類
abstract class Animal {
public abstract void Add(Animal animal);
}
class Cat: Animal {
public override void Add(Cat cat) {
//Do cat things
}
}
class Dog: Animal {
//This should not be allowed
public override void Add(Animal dog) {
//Do dog things
}
}
這裏我們可以看到一個Cat
類型的對象可以傳遞給Dog.Add
。有沒有辦法強制執行功能採取類型Dog
?
我相信有辦法讓它在運行時進行檢查,但如果可能的話我寧願有一個編譯器錯誤。
這是不可能的,因爲如果你這樣做,那麼子類不會實現動物類的Add方法。當你在基類中聲明抽象方法時,這個方法必須在子類中實現。你能指定你的要求是什麼以及你爲什麼要這樣做? –
嗯,這是一個很好的觀點。我爲用戶提供了一個抽象的「效果」類,這些類將有一些方法用於採用同一類的其他實例。雖然,由於用戶正在定義方法,我想可能會出現用戶可能希望不同類型的「效果」通過的用例。 –