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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 习惯就好 于 2015-3-1 13:58 编辑

问题就是我将继承的函数重写后为什么在输出结果里显示了两个;一个是没有修改前的一个是修改后的。我在用多态调用时为嘛总是给我报错!!!看的头都大了    是不是零基础学都这样呀??
  1. class person
  2. {
  3.         private String name;
  4.         private String sex;
  5.         person()
  6.         {
  7.                 name="zhangshan";
  8.                 sex="nan";
  9.                 System.out.println(name+"  "+sex);
  10.         }
  11.         public void show()
  12.         {
  13.                 System.out.println(name+"  "+sex);
  14.         }
  15. }
  16. class student extends person
  17. {
  18.         public void study()
  19.         {
  20.                 System.out.println("xuexi");
  21.         }
  22.         
  23.         public void show()
  24.         {
  25.                 System.out.println("lisi"+"   "+"nan");
  26.         }
  27. }
  28. class  jcdemo
  29. {
  30.         public static void main(String[] args)
  31.         {
  32.                 //System.out.println("Hello World!");
  33.                 student st=new student();
  34.                 st.show();
  35.                 person p=new student();
  36.                 p.show();
  37.                 p.study();

  38.         
  39.         }
  40. }
复制代码

求解答呀!快崩溃了

3 个回复

倒序浏览
本帖最后由 wdhm5423 于 2015-3-1 13:12 编辑
  1. public static void main(String[] args)
  2.         {
  3.                 //System.out.println("Hello World!");
  4.                 student st=new student();//student构造调用super(),调用父类构造方法person(),打印zhangshan  nan
  5.                 st.show();//调用student的show()方法。打印lisi   nan
  6.                 person p=new student();//调用父类构造方法person(),打印zhangshan  nan;多态转化student的show()方法覆盖person的show()方法。
  7.                 p.show();//调用student的show()方法打印lisi   nan
  8.                 p.study();//person中无study()方法,报错
  9.             
  10.         
  11.         }
复制代码


回复 使用道具 举报
p.study();  编译时会报错  多态时不能这样使用  只能调用重写过的方法  ,调用这个方法只能用子类调
别的地方没有错了

回复 使用道具 举报
你可以在再仔细看看视频,毕老师的视频里讲的很清楚的。

在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。


在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。


在多态中,静态成员函数的特点:
无论编译和运行,都参考做左边。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马