在 Java 中,super 不是“超类”本身,而是一个关键字,用来表示当前对象的父类(超类)引用。它的主要用途有三类:调用父类构造方法、访问父类成员变量、调用父类方法。
下面用通俗例子说明。
class Animal {
Animal(String name) {
System.out.println("Animal: " + name);
}
}
class Dog extends Animal {
Dog() {
super("小狗"); // 必须放在第一行
}
}
✅ 说明:
super(...) 用于调用父类构造方法super()(父类无参构造)class Father {
String name = "爸爸";
}
class Son extends Father {
String name = "儿子";
void show() {
System.out.println(name); // 儿子
System.out.println(super.name); // 爸爸
}
}
✅ super.变量名 用来访问父类被隐藏的成员变量
class Father {
void say() {
System.out.println("我是爸爸");
}
}
class Son extends Father {
@Override
void say() {
super.say(); // 调用父类方法
System.out.println("我是儿子");
}
}
✅ 常用于:
| 关键字 | 含义 |
|---|---|
this |
当前对象 |
super |
当前对象的父类对象 |
this(); // 调用本类构造
super(); // 调用父类构造
❌ 在静态方法中使用 super
static void test() {
super.xxx; // 错误
}
❌ super 不在构造方法第一行
Dog() {
System.out.println();
super(); // 错误
}
super就是“去找父类要东西”:
- 要构造 →
super()- 要变量 →
super.x- 要方法 →
super.method()
如果你愿意,我也可以结合继承 + 构造方法执行顺序或面试题给你讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。