super用于子类访问父类成员,1.在构造方法中调用父类构造器,必须是首行语句;2.通过super.方法名调用被重写的父类方法;3.通过super.属性名访问父类同名属性,确保继承链中成员的明确调用。
super 是 Java 中的一个关键字,主要用于在子类中访问父类的成员(包括属性、方法和构造器)。它体现了继承机制中子类与父类之间的联系,帮助开发者明确区分父子类中的同名成员,并正确调用父类的功能。
1. 调用父类的构造器
在子类的构造方法中,可以使用 super() 调用父类的构造方法,完成对父类部分的初始化。
这个调用必须是子类构造方法中的第一条语句。
例如:
class Animal { Animal() { System.out.println("Animal 构造"); }}class Dog extends Animal { Dog() { super(); // 调用父类构造器 System.out.println("Dog 构造"); }}
2. 访问父类的方法
当子类重写了父类的某个方法时,如果仍想调用父类原来的实现,可以用 super.方法名()。
例如:
class Animal { void eat() { System.out.println("动物在吃东西"); }}class Dog extends Animal { void eat() { System.out.println("狗在吃东西"); } void callParentEat() { super.eat(); // 调用父类的 eat 方法 }}
3. 访问父类的属性
如果子类中定义了与父类同名的字段,可以使用 super.属性名 明确访问父类的属性。
例如:
class Animal { String name = "动物";}class Dog extends Animal { String name = "小狗"; void printNames() { System.out.println("子类 name: " + name); System.out.println("父类 name: " + super.name); }}
基本上
就这些。super 的作用就是让子类能安全、清晰地使用父类已有的内容,尤其是在有重写或重名的情况下特别有用。不复杂但容易忽略细节,比如 super() 必须放在构造方法第一行。