namespace Assets { class Student:Person //子类Person继承了父类 { static void Main(string[] args) { Person p1 = new Person(); // new Person();才是创建新对象 //父类型引用 指向 父类型对象 //现象:只能访问父类成员 Student s1 = new Student(); //子类型引用 指向 子类型对象 //现象:能够访问父类成员/也可以访问子类成员 Person p2 = new Student(); //父类型引用 指向 子类型对象 //现象:只能够访问父类成员(受类型制约),但是p2中是有Student类型的成员的(受类型制约无法引用) //如果需要父类型引用访问子类型成员,需要将引用的数据类型进行转换 Student s4 = p2 as Student; //as转换失败的话则结果为null //Student s2 = new Person(); //不存在子类型引用指向父类型对象,因为s2可以引用Stundent类中的成员,但这些成员Person类中可能不存在。 //以下为实例讲解 //以此为例: Person p2 = new Student(); //可以调用什么成员取决于引用的类型(即p2的类型-Person),需要看Persson类中有什么成员,就可以引用这些成员(可以引用但不代表能引用成功) //而能否引用成功该成员则取决于后面创建的对象类型("new 类名()")是否有该成员,即Stundent类中有这种成员就可以引用成功,没有的话将会引用失败 //成员指的就是类中定义的变量、方法等; } } }