f.method1();//编译的时候看的父类里有没有这个方法,指针指向的是父类里的method1,但是运行的时候指针就动态绑定到子类的method1方法,看的是子类.
f.method3();//和上面的method1一样在编译时先去看父类,父类里面没有就会出错.
zi.method1();//本来就是子类的引用指向自己的对象,调用的肯定是子类的method1方法,可以通过super.method1()调用父类的方法.
总之:多态中非静态的方法,编译看左边(就是父类里有没有,没有就出错),运行时看右边(就是子类的)
调用的静态的方法都是父类的.
|