在多态中成员函数的特点:
在编译运行时:参阅引用类型变量所属的类中是否有调用的方法,
如果有,编译通过,如果没有,编译失败;
在运行时:参阅对象所述的类中是否有调用的方法。
简单总结为:成员函数在多态调用时,编译看左边,运行看右边
在多态中,静态成员函数的特点:
无论编译和运行,都参考左边
在多态中成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)
class Fu
{
int num=5;
void method1()
{
System.out.println("fu method_1");
}
void method2()
{
System.out.println("fu method_2");
}
static void method4()
{
System.out.println("fu method_4");
}
}
class Zi
{
int num=8;
void method1()
{
System.out.println("zi method_1");
}
void method3()
{
System.out.println("zi method_3");
}
static void method4()
{
System.out.println("fu method_4");
}
}
class DuoTaiDemo
{
public static void main(String[] args)
{
Fu f=new Zi();
System.out.println(f.num); // 输出5
Zi z=new Zi();
System.out.println(z.num);//输出8
Fu f=new Zi();
f.method1();//输出子类method1方法
f.method2();
f.method3();//编译失败
Zi z=new Zi();
z.method4();//输出子类的静态method_4
Fu f=new Zi();
System.out.println(f.num);//输出父类的method_4,动态绑定
f.method4();//输出父类的静态method_4
}
|
|