上一篇博客提到了多态成员方法的访问特点,这一次来讲多态成员变量的访问特点:
创建Dog类继承Animal类,创建一个成员变量a并初始化,初始值为3:
public class Dog extends Animal{
int age = 3 ;
}
Animal类也创建一个成员变量a并初始化,初始值为2:
public class Animal {
int age = 2 ;
}
然后创建测试进行测试
public class Demo {
public static void main(String[] args) {
Animal a = new Dog();
System.out.println(a.age);
}
}
输出结果是2,访问的是父类中的成员变量。
如果我把父类中的成员变量删除,则会报错。
如果我我把子类的成员变量删除,则输出2。
所以多态成员变量的访问特点为:
编译时看左边父类,
父类没有就报错,
父类有就直接调用成员变量,不管子类有没有。
口诀:编译看左边,运行看左边。