gpt4 book ai didi

java ;将基类转换为派生类

转载 作者:IT老高 更新时间:2023-10-28 20:56:15 28 4
gpt4 key购买 nike

为什么我不能将基类实例强制转换为派生类?

例如,如果我有一个扩展类 C 的 B 类,为什么我不能这样做?

B b=(B)(new C());

还是这个?

C c=new C();
B b=(B)c;

好的,让我更具体地说明我想要做什么。这是我所拥有的:

public class Base(){
protected BaseNode n;
public void foo(BaseNode x){
n.foo(x);
}
}


public class BaseNode(){
public void foo(BaseNode x){...}
}

现在我想创建一组扩展 Base 和 Basenode 的新类,如下所示:

public class Derived extends Base(){
public void bar(DerivedNode x){
n.bar(x);//problem is here - n doesn't have bar
}
}

public class DerivedNode extends BaseNode(){
public void bar(BaseNode){
...
}
}

所以本质上,我想通过扩展 Base 和 BaseNode 来为它们添加新功能,并为它们添加一个功能。此外,Base 和 BaseNode 应该可以单独使用。

如果可能的话,我真的很想在没有泛型的情况下这样做。


好吧,我最终弄明白了,部分感谢 Maruice Perry 的回答。

在我的 Base 构造函数中,n 被实例化为 BaseNode。我所要做的就是在构造函数的派生类中将 n 重新实例化为 DerivedNode,它可以完美运行。

最佳答案

因为如果 B 扩展了 C,则意味着 B 是 C 而不是 C 是 B。

重新考虑你想要做什么。

关于 java ;将基类转换为派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2572348/

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