[英]Overriding Abstract Method C# for different child abstract classes
public abstract class Problem
{
public abstract List<Action> GetPossibleActions(State currentState);
}
這里的 Action 和 State 類也是抽象類。
在問題的子 class 中,我正在使用 Action 和 State 的子級來實現該抽象方法。 現在它給了我錯誤,因為我沒有對返回類型和參數使用相同的抽象類。
public class PizzaProblem : Problem
{
public List<PizzaAction> GetPossibleActions(PizzaState currentState)
{
......
}
}
您可以使您的 class 成為通用 class:
public abstract class Problem<TAction, TState>
where TAction : Action
where TState : State
{
public abstract IList<TAction> GetPossibleActions(TState currentState);
}
public class PizzaProblem : Problem<PizzaAction, PizzaState> { ...
或者不關心列表中包含的具體類型:依靠多態性來調用正確的方法。
簽名需要保持與抽象 class 相同的方式。 嘗試
public List<Action> GetPossibleActions(State currentState)
{
// Your code
}
Action 本身也是一個 object。 如果您沒有定義從 action 繼承的 PizzaAction 類型,它將不起作用。 同樣適用於 State。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.