父类代码如下: public class Person { //父类的构造函数 public Person() { Console.WriteLine("Person"); } //父类的虚方法 public virtual void virFun() { Console.WriteLine("Person's Fun"); } } 子类代码如下: public class Son1:Person//继承 { //子类Son1的构造方法 public Son1() { Console.WriteLine("Son1"); } //重写父类的虚方法 public override void virFun() { Console.WriteLine("Son's Fun"); } } 测试类代码如下: class Test { static void Main(string[] args) { Console.WriteLine("只是创建子类对象:"); Son1 s = new Son1(); s.virFun(); Console.WriteLine("父类对象指向子类引用:"); Person p = new Son1(); p.virFun(); } } 我只创建子类对象指向子类本身,和父类对象指向子类引用,运行的结果是相同的,均为: Person Son1 Son's Fun 那么创建一个父类对象,却指向子类,所谓的这个父类对象指向子类引用(跟TM绕口令似的) Person p = new Son1(); 就是这行, 究竟有什么用途,为什么要用它?我直接用子类对象不完了?什么时候用它,它究竟是什么含义,能解决什么?谁能帮我生动的解释一下,还有分析一下程序的运行过程,我不理解。 非常感谢!
Person p=new Son1()就是相当于子类向上转型; 也可以写成下面这样: Person p=new Person(); Son1 s=new Son1(); p=s; 将子类对象赋给父类对象就是向上转型,Person p=new Son1()中的new Son1()就是实例化一个没有名字的对象,然后转型给父类声明的对象p,仅次而已。