是的,抽象类的设计目的就是被继承(或者说被“实现”)。
下面从概念、作用和规则几个方面说明。
抽象类是用 abstract 修饰的类,通常不能直接实例化,它:
abstract class Animal {
abstract void eat(); // 抽象方法
void sleep() {
System.out.println("睡觉");
}
}
抽象类体现的是一种**“模板”或“规范”**的思想:
✅ 抽象类本身不完整,必须由子类补全抽象方法才能使用
class Dog extends Animal {
void eat() {
System.out.println("狗吃骨头");
}
}
如果子类不实现抽象方法:
abstract class Cat extends Animal {
// 不实现 eat()
}
✅ 这是允许的,但 Cat 仍然是抽象类
| 对比项 | 抽象类 | 接口 |
|---|---|---|
| 是否必须被继承 | ✅ 是 | ✅ 是 |
| 是否有构造方法 | ✅ 有 | ❌ 没有 |
| 成员变量 | ✅ 可以有 | 默认 public static final |
| 方法实现 | ✅ 可以有 | Java 8+ 可以有 default |
抽象类的存在意义就是为了让子类来继承并实现它,否则定义抽象类就没有意义。
如果你愿意,我也可以结合 模板方法模式 或 真实业务场景 给你一个更直观的例子。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。