簡體   English   中英

為不同的子抽象類覆蓋抽象方法 C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM