在 Java 里“使用超类(父类 / 基类)”本质上是为了复用代码、统一行为、降低耦合、提高可扩展性。下面从“为什么要用”以及“用在哪里最合理”两个角度说明。
把多个子类共有的属性和方法放到超类中,子类直接继承即可。
class Animal {
String name;
void eat() {
System.out.println(name + "在吃东西");
}
}
class Dog extends Animal {}
class Cat extends Animal {}
➡ Dog 和 Cat 不需要重复写 name 和 eat()
通过超类类型来操作不同子类对象,程序更灵活。
Animal a = new Dog();
a.eat();
✅ 新增子类不需要改调用代码
✅ 符合“开闭原则”
超类是多态的前提:
void feed(Animal a) {
a.eat();
}
调用方只依赖超类,不依赖具体实现。
List<String> list = new ArrayList<>();
List(超类 / 接口)➡ 换实现不影响业务代码
| 场景 | 用超类 | 用接口 |
|---|---|---|
| 有共同代码实现 | ✅ | ❌ |
| 只是定义规范 | ❌ | ✅ |
| 需要状态(字段) | ✅ | ❌ |
| 多继承需求 | ❌ | ✅ |
❌ 为了“继承而继承”
❌ 父类过于庞大(上帝类)
❌ 子类强行依赖父类实现细节
✅ 原则:is-a 关系才继承
用 Java 超类,是为了把“共性”上提、把“变化”下放,让系统更易复用、易扩展、易维护。
如果你愿意,我也可以用真实项目例子或面试题角度再讲一遍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。