class ab {
int add(int a, int b) {
return a + b;
}
}
class bc extends ab {
String add(int a, int b) {
return a + " " + b;
}
}
如果我使用JRE 5,这段代码会运行吗? JRE7和JRE8会发生什么?
答案 0 :(得分:1)
如果它们相关(或协变以使用严格术语),则只能更改返回类型。从广义上讲,这意味着一个是可引用的另一个:即一个是另一个的子类。
因为String
与int
无关,所以不在你的情况下:int
是原始类型。
答案 1 :(得分:0)
如果在子类中重新定义一个具有不同“返回”类型的方法,那么除非返回类型相似,否则不会调用它(在您的示例中,一个是字符串,另一个是int-完全不同数据类型,所以它没有超越)。
实施例: 超级课程:
public class mysuper
{
byte newfun(int a)
{
return 11;
}
}
子类:
public class mysub
{
int newfun(int b)
{ // this is over-riding,the body of the function is different and the return type is different but similar
return 12;
}
}
掩盖:
1.在覆盖中,函数返回类型完全相同或类似,只有正文可能不同。