我有以下代码
上面的代码是在一次讲座中给我的。我知道X是Y和Z的基类。x是指向X类型对象的引用,y是指向Y类型对象的引用,z是指向Z类型对象的引用。让我困惑的部分是代码的最后两行。据我理解,类型为X的x1引用被赋予与类型为Y的y相同的引用。由于x1被分配到与y相同的引用,这意味着它从X类型转换为Y类型,也就是向下转型。我是否错误地阅读了代码?
class X{}
class Y extends X{}
class Z extends X{}
public class RunTimeCastDemo{
public static void main(String args[]){
X x = new X();
Y y = new Y();
Z z = new Z();
X x1 = y; // compiles ok (y is subclass of X), upcast
X x2 = z; // compiles ok (z is subclass of X), upcast
上面的代码是在一次讲座中给我的。我知道X是Y和Z的基类。x是指向X类型对象的引用,y是指向Y类型对象的引用,z是指向Z类型对象的引用。让我困惑的部分是代码的最后两行。据我理解,类型为X的x1引用被赋予与类型为Y的y相同的引用。由于x1被分配到与y相同的引用,这意味着它从X类型转换为Y类型,也就是向下转型。我是否错误地阅读了代码?