如果我在Java A和B中有两个类A extends
B,如果我在A中有这个方法:
int getmax(){};
在B中我有这个方法:
INTEGER getmax(){};
B中的方法是否会被覆盖或重载? 在这种情况下是A?的B亚型
答案 0 :(得分:4)
如果A.getmax()
是私有的,您将获得两个独立的,无关的方法。
如果A.getmax()
有任何其他访问修饰符(包括根本没有),则会出现编译错误,因为返回类型不兼容。
答案 1 :(得分:1)
“重写方法具有相同的名称,参数的数量和类型,以及它覆盖的方法的返回类型。重写方法也可以返回被重写方法返回的类型的子类型。此子类型称为协变返回类型。“ (http://docs.oracle.com/javase/tutorial/java/IandI/override.html)
答案 2 :(得分:0)
您无法覆盖方法并更改其返回值。
此外,您可以声明具有相同名称但参数不同但方法名称相同,参数相同但返回值不同的方法。
在最后一种情况下,编译器将不知道使用哪种方法。