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并打印出子类而不是超类?
答案 0 :(得分:0)
super
表示父类的实例。
this
表示当前类的实例。
它将打印
超
子类
答案 1 :(得分:0)
我运行了你的代码,它给了我
superclass
subclass
这应该打印一切似乎没问题
答案 2 :(得分:0)
new Subclass().method1();
执行method1()
Subclass
实例,后者又调用super.method0();
即父类实例的method0()
即Superclass
实例method0()
。< / p>
new Subclass().method2();
执行method2()
Subclass
实例,该实例又调用this.method0();
,即此实例的method0()
即Subclass
实例method0()
。
super
用于访问父类的实例成员,而this
用于访问当前类的成员。
答案 3 :(得分:0)
首先,它会打印出您所期望的内容。
第二,
不是this.method0()引用子类中的method0并打印出来 子类而不是超类?
this
=&gt;引用当前对象,使用它你可以使用它(有点指向自身,一般来说)
super
=&gt;引用层次结构中的超类对象,通常用于访问子类