amespace Inheritance{ public abstract class Animal { public string type="animal"; public abstract void ShowType(); } public class Bird : Animal { public string type = "Bird"; public override void ShowType() { Console.WriteLine("Type is {0}", type); } } public class TestInheritance { public static void Main() { Animal animal = new Bird(); Console.WriteLine("Type value is {0}", animal.type); animal.ShowType(); Console.ReadKey(); } }}程序輸出的結果是:Type value is animalType is Bird為什么同樣是將Bird類型賦給Animal,調用animal.ShowType()時用的是Bird的ShowType()方法,而調用animal.type的值卻又是Animal里的type值?
2 回答

翻過高山走不出你
TA貢獻1875條經驗 獲得超3個贊
因為Animal的type變量和Bird的type變量是不同的東西,且成員變量不支持多態性
因此你訪問animal.type的時候沒有多態性,使用了Animal類的
而調用ShowType方法的時候,因為是在Bird類內部,此時Bird類的type更接近調用的方法,所以使用了"Bird"
- 2 回答
- 0 關注
- 599 瀏覽
添加回答
舉報
0/150
提交
取消