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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© AnElse 中级黑马   /  2015-1-22 14:46  /  966 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Fu
  2. {
  3.         int x = 3;
  4.         int y = 4;

  5.         int set()
  6.         {
  7.                 return x+y;
  8.         }
  9. }
  10. class Zi extends Fu
  11. {
  12.         int x;
  13.         Zi(int x)
  14.         {
  15.                 this.x = x;
  16.         }
  17. }

  18. class Test1
  19. {
  20.         public static void main(String[] args)
  21.         {
  22.                 Zi z = new Zi(2);
  23.                 System.out.println(z.set());//为什么输出是父类的x和y的和7??

  24.                 Fu f = z;
  25.                 System.out.println(f.x);
  26.         }
  27. }
复制代码


4 个回复

倒序浏览
因为子类并没有复写set()方法,只是继承
回复 使用道具 举报
本帖最后由 小棽 于 2015-1-22 16:04 编辑

因为你子类没有重写父类的set()方法,当你子类没有set()方法的时候,会调用父类的set()方法,所以打印出来的是父类的x和y的和7重写父类方法的注意点:权限修饰符最好一样(子类的权限修饰符可以比父类的更大,但是不能更小,更小的话编译会不通过),返回值类型一样,方法名一样,参数类型一样

回复 使用道具 举报
小棽 发表于 2015-1-22 15:59
因为你子类没有重写父类的set()方法,当你子类没有set()方法的时候,会调用父类的set()方法,所以打印出来 ...

谢谢!!!
回复 使用道具 举报
gx_lv 发表于 2015-1-22 15:07
因为子类并没有复写set()方法,只是继承

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