📅  最后修改于: 2023-12-03 15:01:49.363000             🧑  作者: Mango
在Java中,super和super()是用于在子类中访问父类成员和调用父类构造方法的关键字。它们的使用有着一些区别,下面将详细介绍它们的用法和区别。
super关键字用于在子类中访问父类的成员变量或成员方法。可以通过super来解决子类和父类中成员名称重名的问题。
以下是super关键字的一些使用示例:
class Parent {
int x = 10;
void show() {
System.out.println("Parent: " + x);
}
}
class Child extends Parent {
int x = 20;
void show() {
System.out.println("Child: " + x);
System.out.println("Parent: " + super.x); // 使用super来访问父类的成员变量
super.show(); // 使用super调用父类的成员方法
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child();
child.show();
}
}
输出结果:
Child: 20
Parent: 10
Parent: 10
在上面的示例中,子类Child中有一个成员变量x和一个成员方法show(),而父类Parent中也有一个成员变量x和一个成员方法show()。通过super关键字,可以在子类中访问父类的成员变量和调用父类的成员方法。
super()方法用于调用父类的构造方法。在子类中的构造方法中使用super()可以显式地调用父类的构造方法。如果没有显式调用,Java编译器会默认在子类的构造方法中插入super()调用父类的无参构造方法。
以下是super()方法的一些使用示例:
class Parent {
Parent() {
System.out.println("Parent constructor");
}
}
class Child extends Parent {
Child() {
super(); // 显式调用父类的构造方法
System.out.println("Child constructor");
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child();
}
}
输出结果:
Parent constructor
Child constructor
在上面的示例中,子类Child中的构造方法中使用super()显式调用了父类Parent的构造方法。
需要注意的是,super()方法必须在子类构造方法的第一行,因为父类的构造方法需要在子类的构造方法执行之前先执行。
super关键字用于访问父类的成员变量和成员方法,而super()方法用于调用父类的构造方法。
总结一下super和super()的区别:
希望以上内容对您有所帮助!