在Java中的子类中实现抽象方法

Mas*_*Bob 5 java abstract-class

我已经使我的代码尽可能通用,以便在将来尝试帮助人们.我的抽象类有一个类类的方法和类型类的输入.在扩展抽象的类中,我尝试实现该方法无济于事.我究竟做错了什么?

public abstract class A {
    public abstract A method1(A arg);
}

public class B extends A {
    @Override
    public B method1(B arg) { "...insert code here"} // Error: The method method1(B) must override or implement a supertype method
}
Run Code Online (Sandbox Code Playgroud)

dav*_*xxx 3

为了实现您想要的:将参数的类型与声明的类相关联,您可以使用泛型。

抽象类:

public abstract class A <T extends A<T>> {
    public abstract T method1(T arg);
}
Run Code Online (Sandbox Code Playgroud)

具体类:

public class B extends A<B> {
    @Override
    public B method1(B arg) { 
     ...
      return ...
    }
}
Run Code Online (Sandbox Code Playgroud)