gpt4 book ai didi

java - 无法在以基类作为参数的函数中调用派生类方法

转载 作者:行者123 更新时间:2023-12-02 08:51:55 35 4
gpt4 key购买 nike

我有以下问题:

class A {
void f() {}
}

class B extends A {
void g() {}
}

class C extends A {
void h() {}
}

void foo(A temp)
{
temp.g();
}

我希望我的 foo() 函数采用基类参数,这样我就可以使用 B 和 C。但是在函数内部我调用了派生类方法,所以我当然会收到错误。
我也在 foo 函数中尝试过这个:

if(temp instanceof B)
{
B somevar = (B)temp;
}
else if( temp instanceof C)
{
C someVar = (C)temp;
}

someVar.g();

但我仍然有一个编译错误,它不知道 someVar 是谁。我怎样才能让它发挥作用?

谢谢。

最佳答案

通常的解决方案是在基类中声明一个由派生类重写的函数。

关于java - 无法在以基类作为参数的函数中调用派生类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6534600/

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