gpt4 book ai didi

java - 类层次结构中的向下转型与向上转型

转载 作者:行者123 更新时间:2023-11-30 03:27:58 26 4
gpt4 key购买 nike

我有以下代码:

public static void main (String[] args) {
Parent p = new Child();
Child c = null;
Grandchild g = null;


p = c; // upcast
c = (Child) p; // downcast
c = (Grandchild) p; // downcast ?

}

其中,GrandchildChild 的子级,ChildParent 的子级。

到目前为止,我知道 p=c 是向上转型,而 c = (Child) p; 是合法的向下转型。现在,我的问题是,c = (Grandchild) p; 是什么?我很困惑如何将 p 一直向下转换为 Grandchild。但是,如果 c 的类型为 Child,则如果 Grandchild 类为Child 的子类型?

最佳答案

如果 p 被实例化为 Child (就像你的例子一样)。所以,这既不是 Actor 阵容,也不是沮丧。示例:

Parent p = new Child();
GrandChild g;
g = (GrandChild)p;

将导致

Exception in thread "main" java.lang.ClassCastException: test.Child cannot be cast to test.GrandChild
at test.Test.main(Test.java:18)
Java Result: 1

要使其有效,您必须将 p 实例化为 GrandChild :

Parent p = new GrandChild();
GrandChild g;
g = (GrandChild)p;

关于java - 类层次结构中的向下转型与向上转型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29711879/

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