如果子类中出现了非私有的同名成员变量时,子类要要访问本类中的变量用this,要访问父类中的同名变量用super。而且你的代码也写错了,下面是我写的你对照一下:
class Fu
{
int x = 10;
}
class Zi extends Fu
{
Zi()
{
int x=8;
}
int x=34;
}
class Example
{
publicstatic void main(String[] args)
{
Zi z = new Zi();
System.out.println(super.x);
在 Zi extends Fu后,Zi就拥有了一份Fu的拷贝(私有的属性和方法除外),在Zi中,如果不重新给x赋值,x默认和Fu的属性x的值一样是10。
在方法外如果直接这样写x=34;既不属于重新定义一个int型的x,也不属于给自己的属性x赋值!!!按照楼上的写法, int x=34;是对父类继承来的属性x的重写。。System.out.println(super.x);是有错误的,main为静态方法,父类变量x是非静态变量,在静态方法中不能直接调用非静态的变量!!!