[英]What is the difference between base reference type vs derived reference type
[英]Difference between the reference types of derived and base classes
伙計們,我需要你的幫助。
我們有這個代碼:
class Program
{
static void Main(string[] args)
{
Animal pig = new Pig();
Pig pig2 = new Pig();
List<Animal> Animals = new List<Animal>();
Animals.Add(pig);
Animals.Add(pig2);
foreach(Animal a in Animals)
{
Animal.AnimalSound();
}
}
}
class Animal
{
public virtual void AnimalSound()
{
Console.WriteLine("AnimalSound");
}
}
class Pig : Animal
{
public override void AnimalSound()
{
Console.WriteLine("wee wee!");
}
}
我的問題是當我實例化變量 pig 和 pig2 時有什么區別 Animal pig = new Pig(); 和 Pig pig2 = new Pig();
為什么不將它們都聲明為 ReferenceType Pig,因為 Pig 一如既往地是 Animal????
不同的是,當你執行這個Animal pig = new Pig();
時, name是不可訪問的Animal pig = new Pig();
,但在這種情況下可以訪問名稱Pig pig2 = new Pig();
. 您總是從基類繼承,因為您想使用來自父類的一些現成的行為,並希望在子類中添加一些特定於子類的行為。 豬永遠是動物,但所有的動物都不是豬。
class Pig : Animal
{
public string name;
public override void AnimalSound()
{
Console.WriteLine("wee wee!");
}
}
所以你有基類Animal
和派生類Pig
。 所以我們的問題可以歸結為基類和派生類之間的區別:
基類是派生其他類的類。
派生類是在現有類的基礎上創建的類。 派生類的一些特點:
Private
屬性不可訪問,但是您可以使用反射來讀取它們的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.