在 Java 中,“调用超类(父类)”通常有以下几种常见场景和写法。我按最常见的情况给你说明:
使用 super(...)
class Animal {
Animal(String name) {
System.out.println("Animal: " + name);
}
}
class Dog extends Animal {
Dog() {
super("Dog"); // 调用父类构造方法
}
}
✅ 注意:
super() 必须写在子类构造方法的第一行super()(无参构造)使用 super.方法名()
class Animal {
void sound() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
void sound() {
super.sound(); // 调用父类方法
System.out.println("Dog bark");
}
}
使用 super.变量名
class Animal {
String name = "Animal";
}
class Dog extends Animal {
String name = "Dog";
void show() {
System.out.println(super.name); // Animal
System.out.println(name); // Dog
}
}
即使不写 super,Java 也会:
class A {
A() {
System.out.println("A");
}
}
class B extends A {
B() {
System.out.println("B");
}
}
输出:
A
B
super(); // 不在第一行 ❌
super.sound(); // 在 static 方法里 ❌(super 不能用于 static)
| 目的 | 写法 |
|---|---|
| 调用父类构造 | super(...) |
| 调用父类方法 | super.method() |
| 访问父类变量 | super.field |
如果你指的是 “反射调用超类”、“抽象类/接口的超类” 或 “泛型超类”,可以告诉我具体场景,我可以给你更针对性的例子。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。