多态成员访问的特点:
成员变量
编译看左边(父类),运行看左边(父类)
成员方法
编译看左边(父类),运行看右边(子类)。动态绑定
静态方法
编译看左边(父类),运行看左边(父类)。
(静态和类相关,算不上重写,所以,访问还是左边的)
只有非静态的成员方法,编译看左边,运行看右边
☆☆注意点:多态后不能使用子类特有的属性和方法
上代码:
public class Zi extends Fu {
int a = 25;
@Override
public void test() {
System.out.println("Zi");
}
}
public class Fu {
int a = 50;
public void test() {
System.out.println("Fu");
}
public void test1(){
System.out.println("Fu");
}
}
@Test
public void duoTaiTest() {
Fu fuzi = new Zi();
System.out.println(fuzi.a);
fuzi.test();
fuzi.test1();
}
结果:
50 成员变量:编译看左边(父类),运行看左边(父类)
Zi 成员方法:编译看左边(父类),运行看右边(子类)。动态绑定
Fu 成员方法:编译看左边(父类),运行看右边(子类)。动态绑定(因为没有覆写,所以子类的方法为继承的父类的方 法)