黑马程序员技术交流社区

标题: 继承的一个问题 [打印本页]

作者: 赵乐    时间: 2013-5-24 22:47
标题: 继承的一个问题
本帖最后由 赵乐 于 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么。

作者: 徐启坤    时间: 2013-5-24 22:50
本帖最后由 徐启坤 于 2013-5-24 22:52 编辑

创建Demo1对象的时候y的值为1,这是Demo1中的y为1
但是
int x = d1.get1();
调用的是Demo1继承来自Demo的get1()函数
返回的是Demo中的x+y,所以值是15

作者: 王九日    时间: 2013-5-24 22:51
this指的是本类对象super是父类对象
作者: 王九日    时间: 2013-5-24 22:51
  1.   int get1()
  2.             {
  3.                         return this.x + this.y;
  4.             }
复制代码
这句的问题
作者: 赵乐    时间: 2013-5-24 22:54
尹桥印 发表于 2013-5-24 22:48
我晕你。。。
大神你调用的是get1()
这个是父类的方法

哦,也就是说调用的是父类的方法,那调用的变量也是父类里面的么。。
作者: 赵乐    时间: 2013-5-24 22:56
王九日 发表于 2013-5-24 22:51
这句的问题

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


作者: 王瀛    时间: 2013-5-24 23:22
调用的是父类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. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2