java抽象类如何使用
抽象类的基本概念
抽象类在Java中通过abstract关键字声明,用于定义不能直接实例化的类。抽象类可以包含抽象方法(无具体实现的方法)和具体方法(有实现的方法)。子类继承抽象类后,必须实现所有抽象方法,除非子类本身也是抽象类。

定义抽象类
使用abstract关键字修饰类,并在类中声明抽象方法(方法无方法体):
public abstract class Animal {
// 抽象方法
public abstract void makeSound();
// 具体方法
public void sleep() {
System.out.println("Sleeping...");
}
}
继承抽象类
子类必须实现抽象类中的所有抽象方法,否则子类也需要声明为抽象类:
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Bark!");
}
}
抽象类的特点
- 不能实例化:无法直接创建抽象类的对象,必须通过子类实现。
- 可包含成员变量:抽象类可以有普通成员变量和静态变量。
- 构造方法:抽象类可以有构造方法,用于子类初始化时调用。
- 多继承限制:Java不支持多继承,一个子类只能继承一个抽象类。
抽象类与接口的区别
| 特性 | 抽象类 | 接口 |
|---|---|---|
| 关键字 | abstract class |
interface |
| 方法实现 | 可包含具体方法和抽象方法 | Java 8前只能有抽象方法 |
| 多继承 | 不支持 | 支持多实现 |
| 成员变量 | 可包含非静态变量 | 默认public static final |
| 构造方法 | 可以有 | 不能有 |
使用场景
- 代码复用:当多个子类有共同行为时,抽象类可提供具体方法实现。
- 强制规范:通过抽象方法要求子类必须实现特定功能。
- 部分实现:抽象类允许部分方法有默认实现,而接口在Java 8前需完全抽象。
示例:抽象类与多态
Animal myDog = new Dog();
myDog.makeSound(); // 输出 "Bark!"
myDog.sleep(); // 输出 "Sleeping..."
通过抽象类可以结合多态特性,统一处理不同子类的行为。






