[英]What happen when you call an override method using super and this keyword?
public class Superclass {
void method0(){
System.out.println("superclass");
}
}
public class Subclass extends Superclass{
void method0(){
System.out.println("subclass");
}
void method1(){
super.method0();
}
void method2(){
this.method0();
}
}
public class RunClass {
public static void main(String[] args){
new Subclass().method1();
new Subclass().method2();
}
}
上面的代码打印出来
superclass
superclass
我希望它能打印出来
superclass
subclass
this.method0()不是引用子类中的method0并打印出子类而不是超类吗?
super
表示父类的实例。 this
代表当前类的实例。 它将打印
超类
子类
我运行了您的代码,它给了我
superclass
subclass
这个应该打印的东西似乎还可以
new Subclass().method1();
执行Subclass
实例的method1()
,后者依次调用super.method0();
即父类实例的method0()
即Superclass
实例method0()
。
new Subclass().method2();
执行Subclass
实例的method2()
,该实例又调用this.method0();
即该实例的method0()
即Subclass
实例method0()
。
super
被使用,而访问父类的实例成员this
是用来访问当前类的成员。
首先,它可以打印出您的期望。
第二,
this.method0()不是引用子类中的method0并打印出子类而不是超类吗?
this
=>引用当前对象,使用它就可以使用它(一般来说,指向自身的指针种类)
super
=>引用层次结构中的超类对象,通常用于访问子类中的隐藏成员
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.