黑马程序员技术交流社区
标题:
继承的一个问题
[打印本页]
作者:
赵乐
时间:
2013-5-24 22:47
标题:
继承的一个问题
本帖最后由 赵乐 于 2013-5-24 23:07 编辑
class Demo
{
int x = 5;
int y = 10;
void setValue(int a, int b)
{
x = a;
y = b;
}
int get1()
{
return this.x + this.y;
}
int get2()
{
return x - y;
}
}
class Demo1 extends Demo
{
int y;
Demo1(int a)
{
y = a;
}
void setValue(int a, int b)
{
x = a;
y = b;
}
int get2()
{
return y;
}
}
class Test
{
public static void main(String[] args)
{
Demo1 d1 = new Demo1(1);
int x = d1.get1();
System.out.println("x="+x);
}
}
复制代码
输出结果为啥是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
int get1()
{
return this.x + this.y;
}
复制代码
这句的问题
作者:
赵乐
时间:
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()方法
class Demo
{
int x = 5;
int y = 10;
void setValue(int a, int b)//定义setValue(int,int)方法,对this.x/y赋值
{
this.x = a;
this.y = b;
}
int get1()
{
return this.x + this.y;
}
int get2()
{
return this.x - this.y;
}
}
class Demo1 extends Demo//Demo1继承Demo
{
int y;
Demo1(int a)//Demo1的构造函数
{
y = a;
}
void setValue(int a, int b)//重写父类Demo的setValue方法
{
x = a;
y = b;
}
int get2()//重写父类Demo的get2()方法
{
return y;
}
}
class Test
{
public static void main(String[] args)
{
Demo1 d1 = new Demo1(1);//创建Demo1的对象d1
int x = d1.get1();//调用父类Demo中的get1()方法
System.out.println("x="+x);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2