1. ホーム
  2. c#

[解決済み] C# "オーバーライドする適切なメソッドが見つかりません。" -- しかし、1つだけある

2022-01-29 09:21:53

質問

C#で親クラスのメソッドをオーバーライドするのに苦労しています。親クラスは以下のように設定されています。

public class Base {
    public Base(Game1 game)
    {
        this.game = game;
    }

    public virtual void Draw()
    {
    }
}

...そして子クラス。

public class Ext : Base {
    public Ext(Game1 game) : base(game)
    {
    }

    public override void Draw(SpriteBatch batch)
    {
    }
}

過去に親メソッドをうまくオーバーライドしたことがあるのですが、今はおそらく信じられないほど単純なことを見落としているようです...それは何でしょう?

EDITです。 実際のスクリプトでは、ExtはBaseから派生しています。問題はまだ解決していません。しかし、迅速な回答をありがとうございました。)

解決方法は?

あなたのコード(編集後)はうまくコンパイルできます。

チェックすべき点は、すべてがパブリックであるかどうかです。 クラスとメソッドの両方が含まれます。

異なるパラメータでオーバーロード?

本当に Base は、あなたが考えているクラスですか?つまり、実際に参照している同名の別のクラスがあるのでしょうか?

編集してください。

コメント中の質問に答えると、異なるパラメーターを持つメソッドをオーバーライドすることはできませんし、その必要もありません。 新しいメソッド(新しいパラメータを持つ)は override というキーワードを入力すれば、問題なく動作します。

もし、パラメータを指定しないベースメソッドの呼び出しを禁止したい場合は、そのメソッドに protected ではなく public . を継承するクラスからのみ呼び出すことができます。 Base