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 关注
- 567 浏览
添加回答
举报
0/150
提交
取消