以下のコードはエラーを生成し、コンパイルしません。しかし、キーワードoverride
を削除すると、警告のみが生成され、コンパイルされ、上書きされます。オーバーライドによって警告が生成され、オーバーライドするとき、overrideキーワードがエラーを生成するのはなぜですか?
論理的な説明はありますか?
class Baseclass
{
public void fun()
{
Console.WriteLine("Hi ");
}
public void fun(int i)
{
Console.Write("Hello ");
}
}
class Derived : Baseclass
{
public override void fun()
{
Console.Write("Bye ");
}
}
class MyProgram
{
static void Main(string[] args)
{
Derived d;
d = new Derived();
d.fun();
d.fun(77);
Console.Read();
}
}
OK。だから、 'new'キーワードが使われるように動作しますが、そうはしません)。今、私はこの問題を理解しています。ありがとう! –
'new'キーワードは、メソッドを隠したい場合にだけ置く必要があります。オーバーライドする場合は、基本クラスのメソッドを仮想としてマークします。メソッドを非表示にすると、多態的な動作は表示されません。 –