super关键字用于访问父类成员。1. 调用父类方法:子类重写方法后可用super.method()调用父类原方法;2. 访问父类属性:子类隐藏父类字段时可用super.field访问;3. 调用父类构造器:子类构造器首行用super(参数)初始化父类状态,若父类无无参构造器则必须显式调用。合理使用可提升代码清晰度与维护性。

在Java中,super关键字用于访问父类的成员(包括属性、方法和构造器)。当子类继承父类时,可能会重写某些方法或隐藏父类属性,这时就可以使用super来明确调用父类中被覆盖的成员。以下是具体的使用方式。
当子类重写了父类的方法,但仍想调用父类的原始实现时,可以使用 super.方法名()。
示例:
class Animal {
void makeSound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
super.makeSound(); // 调用父类方法
System.out.println("Dog barks");
}
}
输出结果会先打印父类的内容,再打印子类新增的内容。
立即学习“Java免费学习笔记(深入)”;
如果子类定义了与父类同名的字段,子类会隐藏父类的字段。此时可用 super.属性名 显式访问父类的属性。
示例:
class Parent {
String name = "Parent";
}
class Child extends Parent {
String name = "Child";
void printNames() {
System.out.println("Child name: " + name);
System.out.println("Parent name: " + super.name);
}
}
这样可以同时访问两个同名但不同作用域的变量。
子类构造器中可以通过 super() 调用父类的构造方法,必须放在构造器的第一行。
示例:
class Person {
String name;
Person(String name) {
this.name = name;
}
}
class Student extends Person {
int rollNo;
Student(String name, int rollNo) {
super(name); // 必须调用父类带参构造器
this.rollNo = rollNo;
}
}
如果不写 super(...),而父类又没有无参构造器,编译会报错。
基本上就这些。合理使用 super 可以增强代码的可维护性和逻辑清晰度,尤其是在继承体系较深的情况下。注意不要滥用,保持语义明确。
以上就是如何在Java中通过super访问父类成员的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号