super用于明确调用父类成员。1. 子类构造方法中通过super()调用父类构造方法,必须位于首行;2. 用super.method()访问被重写的父类方法,可复用并增强父类功能;3. 用super.field访问被隐藏的父类字段,解决同名属性冲突。super确保在继承体系中精准调用父类成员,提升代码可控性与清晰度。

在Java中,super关键字是一个非常重要的概念,主要用于处理继承关系中的类。它可以帮助子类访问父类的成员(包括构造方法、属性和方法),特别是在存在重写或隐藏的情况下,明确指定调用父类的实现。
1. super调用父类构造方法
子类在创建对象时,会默认调用父类的无参构造方法。但如果父类没有无参构造方法,就必须显式使用super()来调用父类的有参构造方法。
- super()必须出现在子类构造方法的第一行。
- 用于初始化从父类继承来的成员。
例如:
class Animal {
String name;
Animal(String name) {
this.name = name;
}
}
class Dog extends Animal {
Dog(String name) {
super(name); // 调用父类构造方法
}
}
2. super访问父类被重写的方法
当子类重写了父类的方法,如果仍想调用父类原来的实现,可以使用super.methodName()。
立即学习“Java免费学习笔记(深入)”;
酷纬企业网站管理系统Kuwebs是酷纬信息开发的为企业网站提供解决方案而开发的营销型网站系统。在线留言模块、常见问题模块、友情链接模块。前台采用DIV+CSS,遵循SEO标准。 1.支持中文、英文两种版本,后台可以在不同的环境下编辑中英文。 3.程序和界面分离,提供通用的PHP标准语法字段供前台调用,可以为不同的页面设置不同的风格。 5.支持google地图生成、自定义标题、自定义关键词、自定义描
- 避免重复编写已被父类实现的功能。
- 常用于在子类方法中“增强”父类行为。
示例:
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");
}
}
3. super访问父类的字段(属性)
如果子类定义了与父类同名的字段,父类的字段会被隐藏。此时可以用super.fieldName访问父类的字段。
- 字段不参与多态,所以需要super显式访问。
- 常见于属性名称冲突的情况。
例子:
class Animal {
String name = "Animal";
}
class Dog extends Animal {
String name = "Dog";
void printNames() {
System.out.println(super.name); // 输出 Animal
System.out.println(this.name); // 输出 Dog
}
}
基本上就这些。super的核心作用是“明确指向父类”,帮助我们在继承体系中精确控制调用来源。理解super有助于写出更清晰、可控的继承代码,尤其是在复杂层级结构中。不复杂但容易忽略细节。









