全て -
new キーワードとそれをいつ使用すべきかについて、さまざまな記事を読みました。
MSDN - http://msdn.microsoft.com/en-us/library/6fawty39(v=vs.80).aspx
StackOverflow -基本クラス メンバーと同じ名前を持つ派生クラス メンバーで new キーワードを使用する利点
これは、この概念を実践するために私が書いたサンプルコードです
static void Main(string[] args)
{
Animal a2 = new Dog();
a2.Talk();
a2.Sing();
a2.Greet();
a2.Dance();
Console.ReadLine();
}
class Animal
{
public Animal()
{
Console.WriteLine("Animal constructor");
}
public void Talk()
{
Console.WriteLine("Animal is Talking");
}
public virtual void Sing()
{
Console.WriteLine("Animal is Singing");
}
public void Greet()
{
Console.WriteLine("Animal is Greeting");
}
public virtual void Dance()
{
Console.WriteLine("Animal is Dancing");
}
}
//Derived Class Dog from Animal
class Dog : Animal
{
public Dog()
{
Console.WriteLine("Dog Constructor");
}
public new void Talk()
{
Console.WriteLine("Dog is Talking");
}
public override void Sing()
{
//base.Sing();
Console.WriteLine("Dog is Singing");
}
public new void Dance()
{
Console.WriteLine("Dog is Dancing");
}
}
私の出力は次のようになります:
私を混乱させているのは、派生クラスで new キーワードを使用すると、実際には基本クラスの出力が表示されることです。それは間違っている - 基本クラスのメンバーシップを非表示にすることになっている新しいキーワードではないため、Animal is Talking および Animal is Dancing の結果は出力されません。
ありがとう