📅  最后修改于: 2023-12-03 14:42:42.930000             🧑  作者: Mango
在Java中,我们通常使用super
关键字来访问超类的方法和实例变量。然而,有时候我们可能不想使用super
关键字,特别是在以下两种情况下:
this
关键字来访问子类的实例变量,而无需使用super
关键字。通常情况下,我们使用super
关键字来调用超类的方法。例如:
public class SuperClass {
public void display() {
System.out.println("This is the super class.");
}
}
public class SubClass extends SuperClass {
public void display() {
super.display(); // 使用super关键字调用超类的方法
System.out.println("This is the sub class.");
}
}
然而,在子类没有重写超类方法的情况下,可以直接使用子类的对象实例来访问超类的方法,而无需使用super
关键字。例如:
public class SuperClass {
public void display() {
System.out.println("This is the super class.");
}
}
public class SubClass extends SuperClass {
// 没有重写display方法
}
public class Main {
public static void main(String[] args) {
SubClass subObj = new SubClass();
subObj.display(); // 直接使用子类对象实例访问超类方法
}
}
上述代码输出:
This is the super class.
当子类和超类中出现同名的实例变量时,通常我们使用super
关键字来访问超类的实例变量。例如:
public class SuperClass {
public int num = 10;
}
public class SubClass extends SuperClass {
public int num = 20;
public void display() {
System.out.println(super.num); // 使用super关键字访问超类的实例变量
System.out.println(this.num); // 使用this关键字访问子类的实例变量
}
}
然而,我们也可以使用this
关键字来访问子类的实例变量,而无需使用super
关键字。例如:
public class SuperClass {
public int num = 10;
}
public class SubClass extends SuperClass {
public int num = 20;
public void display() {
System.out.println(this.num); // 使用this关键字访问子类的实例变量
}
}
这样做的好处是可以更清晰地表达代码的意图。
希望以上信息能对你有所帮助!