C#父类对象和子类对象之间的转化
1. 子类到父类
Chinese c = new Chinese();
Person p1 = c; //从变量c看是一个中国人,所以可以把人的标签贴上去
2. 父类到子类
Chinese c2 = p1; //从变量p1看是一个人,不能随便把中国人的标签贴上去
不成功,必须显式转化如下,两种方式:
(1)Chinese c2 = (Chinese)p1;
(2)Chinese c2 = p1 as Chinese;
上面两种方式的区别,看如下代码
p1 = new Japanese(); //注意:p1调用这个变量的方法,不能调用Japanese对象的方法
Chinese c2 = (Chinese)p1; //会抛异常,非法转换,因为此时p1指向的是一个日本人,所以不能转换为中国人
CHinese c3 = p1 as Chinese; //转换失败不报错,结果是null