Java中关于字父类的问题,求好心人帮助

Zi类继承Fu类,结果应该输出6不应该是7啊,求大神解答。
class Fu{
int x=7;
int y=2;
public void a(){
System.out.println(this.x);
}
}
class Zi extends Fu{
int x=6;
}
public class a122 {
public static void main(String[] args){
Zi zi=new Zi();
zi.a();
}
}

这个很好理解,因为你的方法a是从父类继承过来的,最终调用的是父类的方法,虽然你的子类与父类有同名的成员变量x,但是本质上子类是有两个x的,一个指向自己的x,另一个执行父类的x,然后调用a方法时,由于a是父类的方法,所以在父类方法中访问的变量是父类的值。
如果你要输出7,就要重新a方法,输出子类自己的成员变量x。

 class Zi extends Fu{
    int x = 6;
    public void a() {
        System.out.println(this.x);
    }
}

子类和父类有相同的成员变量时,输出到底是谁的取决于调用的是谁的方法。如果子类重写了a()那么输出的就是子类的x。

首先,你贴图根本看不清楚。直接把代码贴出来,不要贴图。

class Fu{
int x=7;
int y=2;
public void a(){
System.out.println(this.x);
}
}
class Zi extends Fu{
int x=6;
}
public class a122 {
public static void main(String[] args){
Zi zi=new Zi();
zi.a();
}
}

求大神解答,很想弄懂为什么不对,谢谢了。

我认为结果应该输出是6,Zi类里面重写了X,所以zi对象去调用a方法的时候,返回的应该是zi的X,也就是6,然而输出的是7,我就不明白了。

public void a(){
System.out.println(this.x);
}这个方法中不是有一个this关键字吗,应该谁调用a方法就应该输出谁的x,那我是子类调用的应该输出子类的x,就是6啊,如果没有int x=6这条一句,才会输出7啊,