【java】父类和子类不应该出现在同一块存储区域

“父类和子类不应该出现在同一块存储区域”这个理念对于程序的设计是很重要的,在java中也有相关的语法限制。

比如 Manager extends Employee

//数组
Manger[] managers=new Manager[100];
Employee[] employees=managers;//正常编译

在这里如果试图将一个employee实例对象存储到employees,则会抛出异常(ArrayStoreException),原因是java会记住一开始的数组的类型,这是数组的保护。

同样的情况还出现在java的泛型中,

//集合
ArrayList managers =new ArrayList<>();
ArrayList employees=managers;//报错

这里再赋值给employees的时候就会报错,原因是集合并没有像数组那样的保护机制。

你可能感兴趣的:(【java】父类和子类不应该出现在同一块存储区域)