use*_*409 1 java inheritance abstract-class abstract-methods
我有一个抽象类,有一个抽象的方法:
public abstract SomeClass Do(SomeClass o1, SomeClass o2);
Run Code Online (Sandbox Code Playgroud)
然后,当我在一个具体类中实现时,该类扩展了具有之前方法的抽象类,我得到一个错误:
@Override
public AClass Do(AClass o1, AClass o2) //AClass extends Someclass
{
//
}
Run Code Online (Sandbox Code Playgroud)
为什么我得到错误,因为AClass是SomeClass的子类型?
错误是:方法...必须覆盖或实现超类型方法
Jon*_*eet 11
您收到错误,因为它不支持相同的接口.想象一下这样的来电者:
AbstractClass x = new ImplementingClass();
x.Do(new SomeClass(), new SomeClass());
Run Code Online (Sandbox Code Playgroud)
这应该工作 - 它只是使用AbstractClass抽象方法,对吧?但是你传入的值不是AClass引用,它们只是SomeClass引用.
您的返回类型是可以的,但您声明的参数比原始API"更窄",因此您的方法无法处理原始方法可能的所有调用,因此无法覆盖它.
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |