class Constructor
{
int x,y;
Constructor()
{
x=5;
y=7;
}
Constructor( int a )
{
x=a;
}
Constructor(int a,int b)
{
x=a;
y=b;
}
void display()
{
System.out.println("x="+x +",y="+y);
}
}
class ConstMethod
{
public static void main(String args[])
{
Constructor exm1 = new Constructor();
Constructor exm2 = new Constructor(6);//这里的输出是x=6,y=0;跟书上的结果不一样,为什么?
Constructor exm3 = new Constructor(7,8);
exm1.display();
exm2.display();
exm3.display();
}
}为什么y输出的不是7?
{
int x,y;
Constructor()
{
x=5;
y=7;
}
Constructor( int a )
{
x=a;
}
Constructor(int a,int b)
{
x=a;
y=b;
}
void display()
{
System.out.println("x="+x +",y="+y);
}
}
class ConstMethod
{
public static void main(String args[])
{
Constructor exm1 = new Constructor();
Constructor exm2 = new Constructor(6);//这里的输出是x=6,y=0;跟书上的结果不一样,为什么?
Constructor exm3 = new Constructor(7,8);
exm1.display();
exm2.display();
exm3.display();
}
}为什么y输出的不是7?
x=5,y=7
x=6,y=0
x=7,y=8
没有任何不正常Constructor()是default构造函数
Constructor( int a )和
Constructor(int a,int b)
覆写(overridding)了default函数
Constructor()
{
x=5;
y=7;
}//这里的运行后就已经释放空间了
所以下面那个构造函数里y=0;
如果不对希望楼下来的给补充
谢谢
将x=6了.这里肯定应该是6..如果书上不是这样的。那肯定就是错的..除非改为:
Constructor( int a )
{ int x=0;
x=a;
}
这样x的值不会发生变化.因为这时的x为局部变量.
第二问
为什么y输出的不是7?
Constructor exm3 = new Constructor(7,8);你这句将y付值为8了。。肯定y为8.不为7啊。。你把参数交换一下位置如Constructor exm3 = new Constructor(8,7);这时y才为7
Constructor( int a )
{
x=a;
System.out.println("cc"); }
看看会有什么结果。
hailun(大海) ( )
不知道这样讲对不对
Constructor()
{
x=5;
y=7;
}//这里的运行后就已经释放空间了
所以下面那个构造函数里y=0;
================================================ 并不是已经释放空间了
而是exm1,exm2,exm3是三个不同的对象
他们之间暂时互不相干
而对于未初始化的变量
编译器会保证他的初始化
所以exm2.y会被初始化为0
也许可以满足需要.