java 类的继承 看不懂下面的例子

来源:百度知道 编辑:UC知道 时间:2024/05/05 01:52:34
class Variable
{
int x=0,y=0,z=0;
void init(int x,int y)
{
this.x=x;
this.y=y;
int z=5;
System.out.println("x="+x+"y="+y+"z="+z);
}
}
public class VariableTest
{
public static void main(String args[])
{
Variable v=new Variable();
System.out.println("x="+v.x+"y="+v.y+"z="+v.z);
v.init(120,30);
System.out.println("x="+v.x+"y="+v.y+"z="+v.z);
}
}
************************************************
程序运行结果是
x=0y=0z=0
x=120y=30z=5
x=120y=30z=0

不懂的地方是:第二个输出的是x=120 y=30 z=5,
为什么不是x=0 y=0?
这个x和y 的值难道和下面对象V中参数赋值有关?
还有这个Z的值为什么是5而不是0?
分不多,还望高手不吝赐教,谢谢!

其实没什么奇怪的,出现这个值非常正常。
第二个输出的是在init(int x,int y)中输出的
你运行v.init(120,30),

然后在这个方法中输出x,y,z,输出的这几个值都是init方法中的局部变量,肯定按照你给你的值120,30和定义的int z=5来输出。
V中的全局变量只有this.x和this.y改变了。
所以第三次输出就是120/30/0了。

调用v.init(120,30), 使x=120,y=30,init()中z=5

所以输出x=120y=30z=5

第三次输出是由于第二次
this.x=x;
this.y=y;
使X,Y变了

但是Z没有变,所以z=0

这好像不是类的继承

不是类的继承

这是调用类的方法吧

Variable 类中,的方法init()就是用来给指定的成员变量x,y来赋值的,所以当你在VariableTest类中通过创建Variable对象来调用其类中的方法,所以每调用一次,x,y的值就根据你指定的数值进行改变(因为x,y是可以重新赋值的,他们并不是常量,而是一个成员变量),所以输出就变了,并不是你说的输出要为 0,0