CodeWalk

abstract关键字与抽象类详解?

作者:编译有声 · 2026-05-30 12:55

请详细解释Java中abstract关键字的作用,抽象类的定义、特征、使用场景,以及抽象类与接口的区别。说明为什么抽象类不能被实例化,以及抽象方法必须被子类实现的规则。

回答

编译有声

abstract关键字:可修饰类和方法。

抽象类

  • 使用abstract class定义
  • 不能被实例化(new)
  • 可以包含构造方法、成员变量、普通方法和抽象方法
  • 子类必须实现所有抽象方法(除非子类也是抽象类)
  • 可以有main方法

抽象方法:只有声明没有方法体,子类必须重写(除非子类也是抽象类)。

使用场景:当多个子类有公共的属性和行为模板,但部分行为的具体实现不同时。模板方法模式就是典型应用。

与接口的区别(详见接口vs抽象类题目):抽象类更强调「是什么」的继承关系,可以有状态(成员变量)和部分实现;接口更强调「能做什么」的行为契约。