理解“多态 ”之前,先记住两条语法:1,一个引用能够调用哪些成员(变量,函数)取决于这个引用本身的类型。对于这句话我的理解:a),多态的前提必须是两个对象之间存在继承关系,只有确保对象之间是继承关系,才能保证不会出现“人是狗,狗是人”的混乱关系。所谓引用就是指针,如,p.name = "zhangsan"; p就是指向某个对象的指针。如,p和s都是指向某个对象的指针,如果:p=s; 则根据本条语法的理解,p所能够调用的成员就是p本身有的那些成员。如何理解“能够调用的成员”呢?“调用”对于变量而言就是赋值,如p.; 这就是赋值;如果调用的是方法,那就是执行一个函数,如,p.study(..);这就表示调用函数。2,一个引用调用的是哪个方法,取决于这个引用所指向的哪个对象。因为在多态中一定存在方法的重写,引用调用的到底是哪个方法?有时容易混乱,如,p和s都是指向某个对象的指针,p=s; 如,p.study(..);这就表示study(..)函数是s所指向的对象的方法。例:
class Test{
public static void main(string args[])
{ Student s = new student();
Person p = s; //向上转型upcasting
p.;
p.age=20;
p.introduce();//introduce()指向的是student对象的方法