gpt4 book ai didi

java - 覆盖使用子类型的方法

转载 作者:行者123 更新时间:2023-11-29 09:48:11 25 4
gpt4 key购买 nike

我有一个具有抽象方法的抽象类:

public abstract SomeClass Do(SomeClass o1, SomeClass o2);

然后,当我在一个具体类中实现时,它扩展了具有之前方法的抽象类,我得到一个错误:

@Override 
public AClass Do(AClass o1, AClass o2) //AClass extends Someclass
{
//
}

既然 AClass 是 SomeClass 的子类型,为什么我会收到错误消息?

错误是:方法...必须覆盖或实现父类(super class)型方法

最佳答案

你得到一个错误,因为它不支持相同的接口(interface)。想象一下这样的调用者:

AbstractClass x = new ImplementingClass();
x.Do(new SomeClass(), new SomeClass());

应该 工作 - 它只是使用 AbstractClass 抽象方法,对吧?但是您传递的值不是 AClass 引用,它们只是 SomeClass 引用。

您的返回类型没问题,但是您声明的参数比原始 API“窄”,因此您的方法无法处理原始方法可以处理的所有调用,因此无法覆盖它。

关于java - 覆盖使用子类型的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21419649/

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