在 Java 中,super 不是必须写的,要不要写取决于你的具体需求。
下面分几种常见情况说明:
super()super()super()class Father {
// 默认有无参构造
}
class Son extends Father {
Son() {
// 相当于自动执行了 super()
}
}
✅ 不写 super 也完全没问题
super(参数)如果父类只定义了有参构造:
class Father {
Father(int x) {}
}
子类必须显式调用:
class Son extends Father {
Son() {
super(10); // 必须写
}
}
❌ 不写会编译报错
super例如方法重写后,还想用父类版本:
class Father {
void show() {
System.out.println("Father");
}
}
class Son extends Father {
void show() {
super.show(); // 调用父类方法
System.out.println("Son");
}
}
✅ 这种情况 super 是“按需使用”
| 场景 | 是否必须写 super |
|---|---|
| 父类有无参构造 | ❌ 不用写 |
| 父类只有有参构造 | ✅ 必须写 |
| 调用父类方法/变量 | ✅ 按需写 |
| 普通继承 | ❌ 不必须 |
如果你是初学 Java / 准备考试 / 写项目,可以告诉我具体场景,我可以帮你判断“这里该不该写 super”。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。