首页 > 解决方案 > 与超类中的“this”不一致

问题描述

我上了两节课。一个超类和一个子类。

public class SuperClass
{

    protected int x;

    public SuperClass(){
        x=9;
    }

    public int getX(){
        return this.x;
    }

    public Object getObject(){
        return this;
    }
}


public class SubClass extends SuperClass
{
    private int x;

    public SubClass(){
        x = 1;
    }
}

如果我现在创建一个子类

SubClass sub = new SubClass();

并调用这两个方法,“this”在第一个方法中引用超类,第二个是子类本身

sub.getX();

返回

9

这是超类的 x 的值

sub.getObject();

另一方面返回对子类的引用。

“这个”的两个不同引用的原因是什么,或者我错过了什么?

这不应该与 Java 中的覆盖成员变量(变量隐藏)重复,因为我想知道为什么“this”单独引用子类而不是为什么 this.x 给我超类的变量

标签: javathissubclasssuperclass

解决方案


推荐阅读