我们假设Fu f=new zi();"="号作为"左边","="右边作为"右边",在多态中有以下特点:
(1)静态成员函数的特点:无论编译和运行,都参考左边(引用型变量所属的类),就是会运行父类的静态方法。
(2)非静态函数的特点:在编译时期,参阅左边(引用型变量所属的类)是否有调用的方法,如果有,编译通过,如果没有编译失败。
在运行时期,调用的是子类的方法,
简单总结一下:非静态成员函数在多态调用时,编译看左边,运行看右边
(3)对于成员变量的特点:无论编译和运行,都参考左边(引用型所属的类),即运行父类的成员变量。
例如:
class Fu{
int num=3;
}
class Zi extends Fu{
int num=8;
}
class Test{
public static void main(String []args){
Fu f=new Zi();
System.out.println(f.num);
Zi z=new Zi();
System.out.println(z.num);
}
}
运行结果为:3,8