Java中子类对象赋值给父类变量

时间:2022-12-01 05:51:17

1. 在Java中将一个字类对象赋值给父类变量是合法的,这也是实现多态(即方法的动态分派)的前提条件之一。

2. 在Java中父类赋值同样也适用于数组。可以将一个子类数组赋值给一个父类数组变量。但可能会出现如下的问题:

son[] sons = new son[10];
father[] fathers = sons;
fathers[0] = new father();

上面的代码编译时没有报错,因为在father[]数组中存储father对象是合法的。但是,这里fathers和sons引用相同的son[]数组,它不能持有更上层的父类的对象。这个错误只能在运行期捕获,虚拟机会抛出ArrayStoreException异常。

Java中子类对象赋值给父类变量