黑马程序员技术交流社区
标题:
变量问题
[打印本页]
作者:
秦桂胜
时间:
2013-11-20 19:34
标题:
变量问题
class test_parent
{
int x = 5;
int y = 10;
void set_value(int a, int b)
{
x = a;
y = b;
}
int get_1()
{
return this.x + this.y;
}
int get_2()
{
return x - y;
}
}
class test_4 extends test_parent
{
int y;
test_4(int a)
{
y = a;
}
void set_value(int a, int b)
{
x = a;
y = b;
}
int get_2()
{
return y;
}
}
class Test2
{
public static void main(String[] args)
{
test_4 a1=new test_4(1);
int x = a1.get_1();
System.out.println("x="+x);
}
}
复制代码
用 test_4 a1=new test_4(1) 后;a1.get_1()的内容为什么是15
作者:
Faner
时间:
2013-11-20 19:52
test_parent 和test_4 两个类里面 都有变量 x y 但是都是局部变量 当a1.get_1() 调用父类函数的时候 +return this.x + this.y 执行的就是 5 +10
作者:
殷婷婷
时间:
2013-11-20 21:11
本帖最后由 殷婷婷 于 2013-11-20 21:15 编辑
test_4 a1=new test_4(1);//此时执行子类构造方法,al中的y被赋值为1,但注意,这里的y是指在子类中重新定义的y,而不是父类定义的y,这个y的作用范围是子类。
int x = a1.get_1();//调用父类中的get_1方法,this.x+ this.y 指的是父类中定义的x 与 y,当然是5+10
如果子类没有重新定义y,则
test_4 a1=new test_4(1);执行后,y 被赋值为1,这时的y是子类继承父类的y,即在父类中定义的y,那么执行
int x = a1.get_1();后,x + y 为5+1
代码如下:
class test_parent
{
int x = 5;
int y = 10;
void set_value(int a, int b)
{
x = a;
y = b;
}
int get_1()
{
return this.x + this.y;
}
int get_2()
{
return x - y;
}
}
class test_4 extends test_parent
{
//这里不定义y,子类继承父类的y
test_4(int a)
{
y = a;
}
void set_value(int a, int b)
{
x = a;
y = b;
}
复制代码
作者:
吴琼cola
时间:
2013-11-21 08:56
1.类如果继承了父类,类加载器首先会加载父类,向上加载。2.你的子类当中没有调用的方法,可以向上引用父类的方法,如get_1();这个方法,之前父类已经加载过了,它的值已经生成了,所以你得到的是15.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2