public abstract class Abc<T> {
public abstract void f1(T a);
}
abstract class Def<T> extends Abc {
@Override
public void f1(T a) {
System.out.print("f");
}
}
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误:"方法不会覆盖或实现超类型中的方法"
这有什么不对?
您的类定义需要表明您正在扩展父类.
abstract class Def<T> extends Abc<T>
Run Code Online (Sandbox Code Playgroud)
否则,编译器或多或少会假定您正在扩展Abc<object>
,因此包含T
参数的方法签名与父类的方法签名不匹配(因为它使用的是不同的T
参数).