java抽象类如何使用
抽象类的定义与特点
抽象类使用abstract关键字声明,不能直接实例化。它可以包含抽象方法(无实现)和具体方法(有实现),常用于定义通用模板或部分实现。

public abstract class Animal {
// 抽象方法(无实现)
public abstract void makeSound();
// 具体方法(有实现)
public void eat() {
System.out.println("Eating...");
}
}
继承抽象类
子类必须实现父类的所有抽象方法,否则子类也需声明为抽象类。

public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Bark!");
}
}
抽象类的多态性
抽象类可通过子类实现多态,适用于统一接口但不同实现的场景。
Animal myDog = new Dog();
myDog.makeSound(); // 输出: Bark!
myDog.eat(); // 输出: Eating...
抽象类与接口的区别
- 抽象类:可包含字段、构造方法、具体方法和抽象方法;单继承。
- 接口:Java 8后支持默认方法,但无字段和构造方法;多实现。
适用场景
- 代码复用:多个子类共享部分逻辑时,将公共代码放在抽象类中。
- 强制规范:通过抽象方法要求子类必须实现特定行为。
- 扩展性:未来可能新增的方法可先定义为抽象方法。
注意事项
- 抽象类可以有构造方法,但仅用于子类初始化。
- 抽象类可以没有抽象方法,但仍有
abstract标识。 - 字段可以是
private、protected或public。
示例:结合模板方法模式
public abstract class Game {
abstract void initialize();
abstract void startPlay();
abstract void endPlay();
// 模板方法(不可重写)
public final void play() {
initialize();
startPlay();
endPlay();
}
}






