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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵乐 中级黑马   /  2013-5-24 22:47  /  1460 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵乐 于 2013-5-24 23:07 编辑
  1. class Demo
  2. {
  3.             int x = 5;
  4.             int y = 10;
  5.             void setValue(int a, int b)
  6.             {
  7.                         x = a;
  8.                         y = b;
  9.             }
  10.             int get1()
  11.             {
  12.                         return this.x + this.y;
  13.             }
  14.             int get2()
  15.             {
  16.                         return x - y;
  17.             }
  18. }

  19. class Demo1 extends Demo
  20. {
  21.             int y;
  22.             Demo1(int a)
  23.             {
  24.                         y = a;
  25.             }
  26.             void setValue(int a, int b)
  27.             {
  28.                         x = a;
  29.                         y = b;
  30.             }
  31.         
  32.             int get2()
  33.             {
  34.                         return y;
  35.             }
  36. }

  37. class Test
  38. {
  39.             public static void main(String[] args)
  40.             {
  41.                         Demo1  d1 = new Demo1(1);
  42.                         int x = d1.get1();
  43.                         System.out.println("x="+x);
  44.             }
  45. }
复制代码
输出结果为啥是15啊,不是创建Demo1对象的时候y的值为1么。

7 个回复

正序浏览
王瀛 高级黑马 2013-5-24 23:22:16
7#
调用的是父类Demo中的get1()方法
  1. class Demo
  2. {
  3.             int x = 5;
  4.             int y = 10;
  5.             void setValue(int a, int b)//定义setValue(int,int)方法,对this.x/y赋值
  6.             {
  7.                         this.x = a;
  8.                         this.y = b;
  9.             }
  10.             int get1()
  11.             {
  12.                         return this.x + this.y;
  13.             }
  14.             int get2()
  15.             {
  16.                         return this.x - this.y;
  17.             }
  18. }

  19. class Demo1 extends Demo//Demo1继承Demo
  20. {
  21.             int y;
  22.             Demo1(int a)//Demo1的构造函数
  23.             {
  24.                         y = a;
  25.             }
  26.             void setValue(int a, int b)//重写父类Demo的setValue方法
  27.             {
  28.                         x = a;
  29.                         y = b;
  30.             }
  31.         
  32.             int get2()//重写父类Demo的get2()方法
  33.             {
  34.                         return y;
  35.             }
  36. }

  37. class Test
  38. {
  39.             public static void main(String[] args)
  40.             {
  41.                         Demo1  d1 = new Demo1(1);//创建Demo1的对象d1
  42.                         int x = d1.get1();//调用父类Demo中的get1()方法
  43.                         System.out.println("x="+x);
  44.             }
  45. }
复制代码
回复 使用道具 举报
王九日 发表于 2013-5-24 22:51
这句的问题

return this.x + this.y;  和 return x + y; 结果是一样的都是15.

回复 使用道具 举报
尹桥印 发表于 2013-5-24 22:48
我晕你。。。
大神你调用的是get1()
这个是父类的方法

哦,也就是说调用的是父类的方法,那调用的变量也是父类里面的么。。
回复 使用道具 举报
  1.   int get1()
  2.             {
  3.                         return this.x + this.y;
  4.             }
复制代码
这句的问题
回复 使用道具 举报
this指的是本类对象super是父类对象
回复 使用道具 举报
本帖最后由 徐启坤 于 2013-5-24 22:52 编辑

创建Demo1对象的时候y的值为1,这是Demo1中的y为1
但是
int x = d1.get1();
调用的是Demo1继承来自Demo的get1()函数
返回的是Demo中的x+y,所以值是15
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马