Java子类无法实现父类的抽象方法

时间:2014-04-03 23:51:17

标签: java inheritance override parent-child

我有以下内容。如果我保留@Override,我会得到一个错误,该方法必须实现或覆盖超类型方法。如果我删除它,我得到一个错误,子类必须实现继承的抽象方法。为什么下面的代码不起作用,我怎么能让它按照我的意图去做呢?

BaseClass.java:

public abstract class BaseClass
{
    ...
    protected abstract <T extends Inputs> T doStuff(T inputs);

    public abstract static class Inputs
    {
        ...
    }
}

ChildClass.java:

public class ChildClass extends BaseClass
{
    ...
    @Override
    protected Inputs doStuff(Inputs inputs)
    {
        return inputs;
    }

    public static class Inputs extends BaseClass.Inputs
    {
        ...
    }
}

1 个答案:

答案 0 :(得分:3)

尝试并:

public abstract class BaseClass<T extends BaseClass.Inputs>

public class ChildClass extends BaseClass<ChildClass.Inputs>

这意味着你需要更改doStuff()以便它返回T(在BaseClass中),而不需要声明的类型变量:

public abstract T doStuff(T inputs);