永发信息网

C#中,为什么一个对象可以用父类声明,用子类实例化,这个对象到底是什么类型的

答案:2  悬赏:30  手机版
解决时间 2021-03-28 13:21
  • 提问者网友:斑駁影
  • 2021-03-27 16:09
C#中,为什么一个对象可以用父类声明,用子类实例化,这个对象到底是什么类型的
最佳答案
  • 五星知识达人网友:摆渡翁
  • 2021-03-27 16:29
这个实例是子类的,但是因为你生命的时候是用父类声明,所以你用正常的办法访问不到子类自己的成员,只能访问到从父类继承来的成员。你可以用那个实例的GetType()来获得它的类型。
可以这样做的原因是因为父类里有的东西,子类里一定有,而子类里有的东西,父类里不一定有。所以声称是父类,但内容是子类是安全的;而声称是子类,但内容是父类的话,就可能会出现去访问不存在的成员之类的问题,所以compiler会要求你用一个明确的类型转换才能这么做。追问既然这样做访问不到子类自己的成员,那为什么不直接用父类实例化呢,反正声明为子类,也访问不到它自己成员!C#中这样做,到底意义何在?追答可以在使用类型转换的情况下访问到子类的成员。
比如(child_instance_declared_as_father as ChildClass).child_member
全部回答
  • 1楼网友:杯酒困英雄
  • 2021-03-27 17:09
子类的,这种情况多用于多态,好处在于,不管有几个子类继承了这个父类,声明的时候只需用父类声明,但是要指向子类对象。调用重载过的方法时就会自动调用在子类重写的方法。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯