C# 子类和父类的初始化顺序

展开阅读全文

C#中父类转换成子类之后为什么不具备子类的属性和方法了

12-26

笔者是新手,已经在学习面向对象了,可是有一个疑问一直想不通:根据里氏转换原则,父类对象如果里面存储的是一个子类对象,那么这个父类对象是能够强转成子类的。可是根据本人的理解,父类对象强转成子类之后应该就是一个子类对象吧,为什么不具备子类的属性和方法呢。 下面是具体案例: 比如我定义了一个父类对象Person: Class Person { private string name; //定义person类的姓名字段和属性 public string Name { get{return name;} set{name=value;} } private char sex; //定义Person类的性别字段和属性 public char Sex { get{return sex;} set{sex=value;} } public void PersonSayHello() { Console.WriteLine("我是一个人类!"); } } 然后我又定义了一个Person类的子类Student: class Student:Person //继承于Person类 { private int mathscore; //定义一个数学分数属性 public int MathScore { get{return mathscore;} set{mathscore=value;} } public void StuSayHello() { Console.WriteLine("我是一个学生。"); } } 然后我实际代码如下: Person PER=new Student(); //创建一个Student对象,将其赋值给Person对象PER Student STU=(Student)PER; //根据里氏转换原则,将PER对象转换成Student类型,并赋值给STU。 接下来就是问题了,我特意使用PER的GetType()方法试了转换之后PER确实是Student类型,但是我不能为PER的mathscore属性赋值,也不能调用PER作为一个Student对象的StuSayHello()方法,这是为什么呢。 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览