gpt4 book ai didi

Java 向上转换与向下转换

转载 作者:搜寻专家 更新时间:2023-10-30 21:28:23 24 4
gpt4 key购买 nike

我有以下代码

    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 相同的引用。由于 x1 被分配给了与 y 相同的引用,这意味着它从类型 X 到类型 Y,这将是向下转换。我读错了代码吗?

最佳答案

你的类层次结构

Object
|
X
/ \
Y Z

From my understanding, the reference x1 of type X is assigned the same reference as y which is type Y. Since x1 is assigned to the same reference as y, that means it goes from type X to Y which would be downcasting. Am I reading the code wrong?

X x1 = y; // compiles ok (y is subclass of X), upcast 

您正在将 y 分配给 x1。您正在将类型 Y 的引用分配给类型 X 的引用。查看层次结构,您将向上移动,因此 upcast

关于Java 向上转换与向下转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21818544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com