私は OOP を学んでおり、以下のコードで正確に何が起こっているのかについて質問があります。
私は古典的なDog
Animal
例を持っています。Dog
を継承しAnimal
ます。
public class Animal
{
public string Name { get; set; }
public virtual string Speak()
{
return "Animal Speak";
}
public string Hungry()
{
return this.Speak();
}
}
public class Dog : Animal
{
public override string Speak()
{
return "Dog Speak";
}
public string Fetch()
{
return "Fetch";
}
}
両方の質問は、次の割り当てに基づいています。Animal a = new Dog();
Animal
を宣言して参照に設定すると、実際に何が起こっているのかDog
。これには特定の用語がありますか?- を呼び出す
a.Hungry()
と、出力は「Dog Speak」です。出力が「Dog Speak」の場合、なぜ呼び出せないのa.Fetch()
ですか? ここで起こっていることを表す用語は何ですか?
特定のトピックに関するヘルプとさらなる読書は大歓迎です。