为了账号安全,请及时绑定邮箱和手机立即绑定

关于多态的一个小疑惑

关于多态的一个小疑惑

哔哔one 2018-12-25 10:09:59
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"


查看完整回答
反对 回复 2018-12-29
  • 2 回答
  • 0 关注
  • 547 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信