在 Java 中,super 不是“超类”本身,而是一个关键字(reference),用来引用当前对象的父类(超类)成员。它的主要作用可以总结为以下几类:
super 的主要作用语法:
super(参数);
特点:
super(...),编译器会默认调用 super()(父类无参构造)示例:
class Animal {
Animal(String name) {
System.out.println("Animal: " + name);
}
}
class Dog extends Animal {
Dog() {
super("Dog");
System.out.println("Dog constructor");
}
}
✅ 作用:保证父类先被正确初始化
当子类成员变量与父类同名时,用 super 区分。
class Parent {
int x = 10;
}
class Child extends Parent {
int x = 20;
void show() {
System.out.println(x); // 20
System.out.println(super.x); // 10
}
}
✅ 作用:明确访问父类字段,避免歧义
当子类**重写(override)**了父类方法,但仍想使用父类实现时:
class Parent {
void show() {
System.out.println("Parent show");
}
}
class Child extends Parent {
@Override
void show() {
super.show(); // 调用父类方法
System.out.println("Child show");
}
}
✅ 常见用途:
super 与 this 的区别| 对比项 | this |
super |
|---|---|---|
| 指向 | 当前对象 | 父类对象 |
| 构造方法 | this() |
super() |
| 成员访问 | 本类成员 | 父类成员 |
| 使用位置 | 本类任意位置 | 子类中使用 |
super 的使用限制static 方法中使用(无对象)
super的作用是:在子类中安全、明确地访问父类的构造方法、成员变量或方法。
如果你愿意,我也可以用内存模型图或面试题角度再帮你讲一遍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。