日期:2014-05-20  浏览次数:20591 次

关于子类重写父类方法的问题
我的印象中,子类重写父类的方法是跟父类的返回值类型无关的,只跟父类的方法名和参数类型有关,但是昨晚再做练习的过程中碰到过一题,如下
class A{
public int test(int a, int b){
System.out.println("A.test()");
return 0;
}
}
class B extends A{
public short test(int a, int b){
System.out.println("B.test()");
return 0;
}

答案是返回值类型必须相同或是父类方法返回值类型的子类,父类方法返回值类型的子类这句话是什么意思?谁知道吗?

------解决方案--------------------
确实他没有表达清楚
返回值必须是int或者int的子类
------解决方案--------------------
“父类方法返回值类型的子类”
打个比方,父类中方法返回值是Object,那你在子类中覆盖此方法返回String类型就是可以的,返回InputStream也是可以的,因为String和InputStream都是Object的子类。当然你仍然返回原来的类型Object也是可以的。
你的父类里面,返回的是int,int是基本类型没有子类,所有你子类的方法里面也只能返回int了。