一个小程序出错了
class L{
int a,b ;
L(int a,int b)
{
this.a=a;
this.b=b;
}
void print()
{
System.out.println(a+" "+b);
}
}
class H extends L
{
int x,y,z;
H(int x,int y,int z)
{
super(x,y);
this.z=z;
}
public void print()
{
System.out.println("x="+x+" "+"y="+y+" "+"z="+z);
}
}
public class Z
{
public static void main(String args[])
{
H real=new H(6,7,8);
real.print();
}
}
结果咋不对啊!!刚学Java,请大家帮忙看看!!!
----------------解决方案--------------------------------------------------------
运行结果:
x=0 y=0 z=8
有什么问题了?
----------------解决方案--------------------------------------------------------
class L
{
int a,b ;
L(int a,int b)
{
this.a=a;
this.b=b;
}
void print()
{
System.out.println(a+" "+b);
}
}
class H extends L
{
int x,y,z;
H(int x,int y,int z)
{
super(x,y);
this.z=z;
}
public void print()
{
System.out.println("x="+x+" "+"y="+y+" "+"z="+z);
}
}
public class Z Z没有定义。呵呵呵 ,修改一下!!!
{
public static void main(String args[])
{
H real=new H(6,7,8);
real.print();
}
}
----------------解决方案--------------------------------------------------------
H(int x,int y,int z)
{
super(x,y);
this.z=z;
}
因为H继承了L,所以H有a,b的属性。而super(x,y);就是把a=x;b=y;
所以H的x,y没有被赋值,所以为0.如果要输出6,7,8应该改成
public void print()
{
System.out.println("x="+a+" "+"y="+b+" "+"z="+z);
}
----------------解决方案--------------------------------------------------------
以下是引用MyStar在2010-4-21 22:05:35的发言:
class L
{
int a,b ;
L(int a,int b)
{
this.a=a;
this.b=b;
}
void print()
{
System.out.println(a+" "+b);
}
}
class H extends L
{
int x,y,z;
H(int x,int y,int z)
{
super(x,y);
this.z=z;
}
public void print()
{
System.out.println("x="+x+" "+"y="+y+" "+"z="+z);
}
}
public class Z
{
public static void main(String args[])
{
H real=new H(6,7,8);
real.print();
}
}
结果咋不对啊!!刚学Java,请大家帮忙看看!!!
不要起重复的变量名,因为属性x,y不是父类的属性,super(x,y); 只是对父类的属性a,b赋值,而子类的x,y仍是默认值0 class L
{
int a,b ;
L(int a,int b)
{
this.a=a;
this.b=b;
}
void print()
{
System.out.println(a+" "+b);
}
}
class H extends L
{
int x,y,z;
H(int x,int y,int z)
{
super(x,y);
this.z=z;
}
public void print()
{
System.out.println("x="+x+" "+"y="+y+" "+"z="+z);
}
}
public class Z
{
public static void main(String args[])
{
H real=new H(6,7,8);
real.print();
}
}
结果咋不对啊!!刚学Java,请大家帮忙看看!!!
----------------解决方案--------------------------------------------------------
回复 5楼 lampeter123
那怎么给x,y赋值啊? ----------------解决方案--------------------------------------------------------
以下是引用MyStar在2010-4-22 12:06:39的发言:
那怎么给x,y赋值啊?
class L //将父类的a,b 改为x,y那怎么给x,y赋值啊?
{
int x,y ;
L(int x,int y)
{
this.x=x;
this.y=y;
}
void print()
{
System.out.println(x+" "+y);
}
}
class H extends L
{
int z;
H(int x,int y,int z)
{
super(x,y);
this.z=z;
}
public void print()
{
System.out.println("x="+x+" "+"y="+y+" "+"z="+z);
}
}
public class Z
{
public static void main(String args[])
{
H real=new H(6,7,8);
real.print();
}
}
----------------解决方案--------------------------------------------------------
zhao laoshi dang mian wen ,hen hao jiejue de
----------------解决方案--------------------------------------------------------
回复 7楼 lampeter123
谢啦!! ----------------解决方案--------------------------------------------------------