首页 > 代码库 > 关于继承(子类对象与父类对象【相互转换】的过程)
关于继承(子类对象与父类对象【相互转换】的过程)
<1>
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace list { class A { } class B : A { public A MyMthod() { //你想想看这个MyMthod()方法的返回值类型明明是A类型,为什么这里返回一个B类型对象也不报错呢? return new B(); //因为B类型是A类型的子类,子类对象可以隐式的转换成父类对象。这里已经将B类型隐式的转换成A类型并将它返回了。所以它不会报错。 } } class Program { static void Main(string[] args) { A a = new A(); B b = new B(); a = b; //子类对象可以赋值父类对象 //b = a; //父类对象不可以赋值给子类对象 b = (B)a; //举个例子:假如父类是 “人” 它有两个子类,一个“中国人”类,一个“美国人”类 //也就是说 new一个中国人的对象“李小龙” new一个美国人的对象“奥巴马” // new 一个 “人"的对象 "人1" //子类对象“李小龙”,“奥巴马”肯定是可以赋值给“人”这个父类对象人1的。因为“人1”可以是中国人,也可以是美国人,只要是人就可以了。这里你给我一个“李小龙”,或者“奥巴马”肯定是可以的。 //而父类对象 “人1”赋值给子类对象“李小龙”或者子类对象“奥巴马”就不可以了。 //因为“李小龙”是中国人类型 ,中国人类型就只能接收中国人类型,所以当你把一个“人”类型对象赋值给“中国人”类型对象的时候,就出错了。我管你要一个中国人,你给我一个人1。我怎么知道你这个“人1”是不是中国人呢?你也可能是美国人,也可能是德国人。对吧。 //除非 你给我指定说,这个人一定是一个中国人。“李小龙”=(中国人)“人1” } } }
关于继承(子类对象与父类对象【相互转换】的过程)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。