如果超类具有使用关键字“ this
”的方法,并且子类调用了该方法,那么使用“ this
”的超类方法会引用子类对象吗?
答案 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");
}
}
TestClassChild tc = new TestClassChild();
tc.func();
输出量
cFunc in child - Child method is called
In Parent
TestClass t = new TestClassChild();
t.func();
输出量
cFunc in child - Irrespective if it was referenced by parent still child method got called.
In Parent
TestClass tp = new TestClass();
tp.func();
输出量
cFunc in parent - Parent function got called.
In Parent
希望以下示例可以使您理解清楚。