覆盖超类的方法时,Java允许返回类型是协变的.
为什么相比之下逆变参数类型不覆盖方法允许吗?
编辑:我将在此留下这个例子.阅读评论以获取更多信息,但一般情况下:请勿使用此设计!这不好!
我现在搜索了一段时间的答案,但找不到任何真正具体的说法,不,你不能因为...或者是的,你可以这就是你做的.
所以问题是,我可以创建一个定义Object类型参数的抽象方法,然后使用具体的参数类型实现它,如下所示:
public abstract class ToBeOverriden {
public Object method1 (Object parameter);
public String method2 (Object parameter);
public void method3 (Object parameter);
}
Run Code Online (Sandbox Code Playgroud)
然后用这个覆盖它:
public class Implementation {
@Override
public DateTime method1 (Person parameter){
return new DateTime();
}
@Override
public String method2 (MotorCycle parameter){
return new DateTime();
}
@Override
public void method3 (String parameter){
return new DateTime();
}
}
Run Code Online (Sandbox Code Playgroud)
人是我创造的对象.返回类型可以是任何.目前我不能这样做.它不让我.我的猜测是因为我的Class没有扩展Object.虽然一切都扩展了对象...所以......
或者我是否需要刷新我的Java知识?:)
编辑:添加了更复杂的类结构.
谢谢!