本帖最后由 刘云龙 于 2013-3-14 21:25 编辑
樊玲 发表于 2013-3-12 23:15
*** 覆盖的前提是子类与父类方法名,返回值类型一样,参数类型名,个数要一致,还要确保父类方法的权限被子 ...
不知道你有没有测试过,我的结论是子类的返回值可以是父类返回值的子类
看下边的例子:
/*
子类继承父类后,覆写父类方法,返回值问题
结论:
子类覆写父类方法后,返回值(引用类型)可以是父类方法返回值的子类
*/
class ExtendsFanHuiTest
{
public static void main(String[] args)
{
new Zi().show();
}
}
abstract class Fu
{
public Object show()
{
System.out.println("Fu show()");
return new Object();
}
public abstract Big function();
}
class Zi extends Fu
{
@Override//为了确定却是是
public String show()//此处Zi类继承了Fu类的方法,但是返回值不同,Fu类返回Object,而子类返回其Object的子类String类,编译可以通过,且可以运行
{
System.out.println("Zi show()");
return new String();
}
@Override
public Little function()//此处Zi类继承了Fu类的方法,但是返回值不同,是Fu类返回值的子类,
{
return null;
}
}
//下边是随便写的两个类,存在继承关系
class Big
{
}
class Little extends Big
{
}
|