方法的重写要遵循“两同两小一大”规则,“两同”即方法名相同、形参列表相同,“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常应比父类方法声明抛出的异常类更小或相等。“一大”指的子类方法的访问权限应比父类方法更大或相等。
class A{
protected int method (int a, int b) {
return 0;
}
}
class D extends A{
public short method(int a, int b) { return 0; }
}
但代码中为什么class D中返回值类型会报编译错误,只有改成int才能通过编译?
求大神,指教!
------解决方案--------------------
子类方法返回值类型应比父类方法返回值类型更小或相等
这句话是针对 Object及其子类来说的,也就是
要有父子关系才行,而8种基本数据是没有父子关系的.
class A {
protected Object method(int a, int b) {
return 0;
}
}
class D extends A {
public Integer method(int a, int b) {
return 0;
}
}
![](/img/2014/06/07/17204061.gif)
------解决方案--------------------
正解+10086
------解决方案--------------------
更小 指继承关系,而int和short无继承关系
------解决方案--------------------
基本数据类型没有父子关系,是父子关系.
------解决方案--------------------
唉,来晚了一步啊
------解决方案--------------------
楼上正解,基本类型没有父子关系。
------解决方案--------------------
![](/img/2014/06/07/17204062.gif)