A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


import java.io.*;
public class Test1
{
public static void main(String[] args)
{
  Fu f=new Zi();
  f.print();
}
}
class Fu
{
//父类的print方法,注意:没有返回值类型。
public void print()
{
  String s="trghtgh";
  System.out.println(s);
}
}
class Zi extends Fu
{
//覆盖父类中的方法。但是我有一个想法,也许是我的版本问题。能不能在子类继承覆盖父类方法时把返回值类型给扩展一哈!!
//这样程序扩展性 岂不是更强大?????随便探讨一哈,个技术分。
public void print()
{
  String s="ghfhjy";
  int i=44564654;
  System.out.println("s="+s+"   i="+i);
}
}


//
  1. <font color=red size=7>问题://覆盖父类中的方法。但是我有一个想法,也许是我的版本问题。能不能在子类继承覆盖父类方法时把返回值类型给扩展一哈!!
  2. //这样程序扩展性 岂不是更强大?????随便探讨一哈,个技术分。
  3. </font>
复制代码

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

8 个回复

正序浏览
那我看看啊,真不知道啊   谢了兄弟
回复 使用道具 举报
复习父类的方法可以返回子类型,从1.5开始这叫做协变式返回类型
回复 使用道具 举报
问题已解决
回复 使用道具 举报
问题 讨论结束
回复 使用道具 举报
你不觉得有点被束缚的感觉吗?
回复 使用道具 举报
嗯嗯  你讲的有道理  可是  估计 应该有 这样的语法?我们怀疑我们现在学的 有一点脱节了,只是怀疑哈。  
回复 使用道具 举报
返回值类型当然不能扩展了,那就不叫覆盖了。
什么是覆盖?就是除了修饰符的权限稍微可以改变以外,修饰符权限可以扩大,例如,protected可以扩大为public,
其它的(函数名称,参数类型,参数个数,函数返回类型)都必须一模一样。
回复 使用道具 举报
public void print()
{
  String s="trghtgh";
  System.out.println(s);
}
}
class Zi extends Fu
{
//覆盖父类中的方法。但是我有一个想法,也许是我的版本问题。能不能在子类继承覆盖父类方法时把返回值类型给扩展一哈!!
//这样程序扩展性 岂不是更强大?????随便探讨一哈,个技术分。
public void print()
{
  String s="ghfhjy";
  int i=44564654;
  System.out.println("s="+s+"   i="+i);
}
上面是你的代码,但是,如果你把子类的这个方法的返回值类型改变了,就不是覆盖了,就是一个新方法了
所以,要保证覆盖以便于在多态时能用到,只能保证类型完全跟父类一样,那样才是覆盖,如果不清楚
可以在前面加个@Override 然后再写你覆盖的方法,这样能保证你是在覆盖父类方法。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马