Saa*_*bal -2 java inheritance this
我正在使用继承的子级和父级关系。我编写了一个代码,在Parent类的方法中使用“ THIS”关键字,并且在Child类中覆盖了相同的方法。当我使用'Super'关键字从子类覆盖方法调用父类方法时,在父类方法中,'THIS'关键字表示子对象类,而当我使用'THIS'关键字从父类方法调用方法时,它调用子类方法(此方法是相同的,也可以在父子类中使用覆盖方法使用)。
class Parent {
void onResume() {
println("Parent:OnResume" + this) // Here 'this' denotes Child class's Object
this.show() // here Child class's method is invoked
show() // here Child class's method is invoked as well
}
void show() {
println("Parent:Show")
}
}
class Child extends Parent {
override
void onResume() {
super.onResume()
println("Child:->OnResume" + this)
}
override
void show() {
println("Child:Show")
}
}
//Calling code
Parent parentRef = new Child()
parentRef.onResume()
Run Code Online (Sandbox Code Playgroud)
如果我使用父类的引用变量创建子类的对象,例如
Parent parentRef = new Child()
Run Code Online (Sandbox Code Playgroud)
然后,“ this”表示Parent类的onResume()方法中的Child对象,当我们在Parent中调用show()方法时,它将调用Child类的show()方法。
请让我弄清楚为什么会这样。据我所知,“ this”是指该类的当前对象,所以在这里为什么“ this”是指Parent类的Child对象。因此,请提供详细的内部详细信息。提前致谢。
this引用当前实例。如果创建的实例Child,this则Child无论是this在父类代码还是子类代码中编写,运行时类型均为。
如果你调用this.someMethod()的Parent类代码,如果someMethod是通过覆盖Child类的Child类方法将被执行。
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |