用超类对象接收new出来的子类对象时,数据会不会丢失
程序员文章站
2024-03-01 20:42:52
...
我么会常常遇到用超类的对象来接收new的子类对象,这样会不会出现数据丢失呢?我们先来看这段代码:
public class Car {
private String name = "汽车";
private double price = 10000;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
public class BWMCar extends Car {
private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
public class CarManage {
public static void main(String[] args) {
Car car = new BWMCar();
car.getColor(); //这里会报错
}
}
由此可见上述情况是会出现数据丢失的,超类无法全部接收子类的属性和方法,他只能接收到自己有的那一部分,当它执行相应的方法时,调用的还是子类传给他的属性和方法,也就是说只有部分的数据会丢失。
这个看起来不安全,其实后面的工厂模式是运用了这种方法,也成为多态。
上一篇: J2EE项目代码编写规范分享
下一篇: 基于Spring框架的Shiro配置方法