在 Java 中,“超类(Superclass)”指的是被继承的类,也叫父类。使用超类主要涉及 继承、方法重写、super 关键字、构造方法调用 等。下面用通俗的方式给你讲清楚。
class Animal { // 超类 / 父类
void eat() {
System.out.println("动物在吃东西");
}
}
class Dog extends Animal { // 子类
void bark() {
System.out.println("狗在叫");
}
}
Animal 是 超类Dog 是 子类extends 继承超类class Student extends Person {
}
✅ 子类可以:
public / protected 属性和方法❌ 不能:
private 成员class Person {
String name;
Person(String name) {
this.name = name;
}
}
class Student extends Person {
Student(String name) {
super(name); // 调用父类构造方法
}
}
⚠️ 注意:
super(...) 必须放在子类构造方法第一行super(...)class Animal {
void eat() {
System.out.println("动物吃东西");
}
}
class Dog extends Animal {
void eat() {
super.eat(); // 调用父类方法
System.out.println("狗吃骨头");
}
}
class Father {
int age = 50;
}
class Son extends Father {
int age = 20;
void print() {
System.out.println(age); // 20
System.out.println(super.age); // 50
}
}
子类重新定义父类的方法
class Animal {
void sound() {
System.out.println("动物叫");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("猫叫");
}
}
✅ 规则:
@Override 不是必须,但强烈推荐Animal a = new Dog(); // 父类引用指向子类对象
a.eat();
✅ 实际调用的是:
❌ 1. 子类构造方法没调用父类构造
class A {
A(int x) {}
}
class B extends A {
B() {
// 编译错误
}
}
✅ 正确写法:
B() {
super(10);
}
❌ 2. 试图重写 private 方法
class A {
private void test() {}
}
class B extends A {
void test() {} // 这不是重写,只是新方法
}
✅ 适合用超类的情况:
例如:
Animal → Dog / CatShape → Circle / RectangleBaseController → UserController超类 = 父类,用来被继承;
用extends继承,super调用父类构造和方法,
子类可重写父类行为,实现多态。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。