意思就是如果父类中有一个属性,子类中赋上新的值,父类的引用访问这个属性时,是访问父类的属性,还是子类的属性
Animal obj1=new Dog();obj1引用的属性的父类的
可以试试
//父类
public class Vehicle {
int passenger;
}
//子类
public class Car extends Vehicle{
int passenger = 4;
}
//测试类
public class initial {
public static void main(String[] args) {
Car obj1 = new Car();
System.out.println(obj1.passenger);
}
}
看你父类的引用创建的是父类对象还是子类对象啊,如果创建的是子类对象,系统会先初始化父类的属性,然后初始化子类的属性,这时你调用该属性得到的就是子类覆盖过的属性啦
要看类的类型、关系到类的封装性