子类使用“ this”调用超类方法

时间:2019-11-06 05:19:53

标签: java inheritance this extends superclass

如果超类具有使用关键字“ this”的方法,并且子类调用了该方法,那么使用“ this”的超类方法会引用子类对象吗?

3 个答案:

答案 0 :(得分:0)

否,this将始终引用我们正在使用它的类的实例。

  

如果我们在父类中使用this,它将始终返回父类   实例。

如果要在父类方法中使用子类的this,请覆盖父类的方法。

答案 1 :(得分:0)

this始终引用自身对象。即,如果孩子使用this引用,则指向孩子。如果父母使用this,则指向父母。

如果this无法找到对自身所需内容的引用,则它将在父级中查找引用。

我怀疑您的困惑来自方法重写,即父级可以使用this调用方法,但是子级中的方法被执行了。这是因为,总是在子对象中创建的对象。因此,在这种情况下,this指向孩子。

简单地说,this指向已实例化的类的实例。如果该实例不包含所引用的实体,则在父对象(如果有)上进行查找

答案 2 :(得分:0)

类中的关键字this将始终引用该对象。

我创建了一些样本类以更好地理解。

父母阶级

public class TestClass{
    public void func(){
        this.cFunc();
        System.out.println("In Parent");
    }

    public void cFunc(){
        System.out.println("cFunc in parent");
    }
}

儿童班

public class TestClassChild extends TestClass{
    public void cFunc(){
        System.out.println("cFunc in child");
    }
}

情况

1)使用子类引用访问子对象

TestClassChild tc = new TestClassChild();
tc.func();
输出量
cFunc in child - Child method is called
In Parent

2)使用父类引用访问子对象

TestClass t = new TestClassChild();
t.func();

输出量
cFunc in child - Irrespective if it was referenced by parent still child method got called. 
In Parent

3)使用父类引用访问父对象

TestClass tp = new TestClass();
tp.func();

输出量
cFunc in parent - Parent function got called.  
In Parent

希望以下示例可以使您理解清楚。