gpt4 book ai didi

java - 继承和抽象参数传递

转载 作者:行者123 更新时间:2023-12-01 12:53:42 25 4
gpt4 key购买 nike

我有以下类(class):

Abstract class A
Abstract class B extends A
class C1 extends B
class C2 extends B
class C3 extends B

类 C1、C2、C3 实现相同的抽象方法:

public MyItem getItem()

在其他类(例如 X 类)中,我有(想要有...)功能:

void testFunction(A classA)
{
MyItem myItem = classA.getItem();
...
}

但是当我这样做时,我遇到了编译错误。

我不明白为什么?为什么我不能按我想要的方式编写 void testFunction(A classA) ?(我知道在 C++ 中我可以做到)

谢谢

最佳答案

问题在于您可能没有在类 A 中定义方法 getItem()

您可以通过简单地在类 A 中添加此行来定义它(如果您不想/可以,则不必指定它的具体实现):

abstract public MyItem getItem();

通过这种方式,方法签名是在类 A 中定义的,因此当您声明了类 A 的对象时,您可以调用它。

然后是所有扩展A具体类(例如类C1C2C3),必须通过重写来强制实现 getItem() 方法。您还可以在方法实现之前添加 @Override 表示法,例如:

class C1 extends B {

@Override
public MyItem getItem() {
//concrete implementation
}
}

关于java - 继承和抽象参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24034224/

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