Java 抽象类详解

Java 面向对象编程 中,抽象类(abstract class )是一种不能直接实例化的类,用于定义一组具有共同特征的类的基本结构。它既可以包含抽象方法 (无方法体,需子类实现),也可以包含具体方法(有方法体,可直接复用)。

核心特性

  • 使用 abstract 关键字修饰类或方法。

  • 抽象类可以有成员变量构造方法普通方法

  • 若类中存在抽象方法,则该类必须声明为抽象类。

  • 子类必须实现所有抽象方法,否则也必须声明为抽象类。

示例代码

java 复制代码
// 抽象类定义
public abstract class Employee {
   private String name;
   public Employee(String name) { this.name = name; }
   public String getName() { return name; }
   // 抽象方法
   public abstract double computePay();
   // 普通方法
   public void mailCheck() {
       System.out.println("Mailing a check to " + name);
   }
}
// 子类实现抽象方法
public class Salary extends Employee {
   private double salary;
   public Salary(String name, double salary) {
       super(name);
       this.salary = salary;
   }
   @Override
   public double computePay() {
       return salary / 52;
   }
}

main 方法中:

java 复制代码
public static void main(String[] args) {
   Employee e = new Salary("John", 5200);
   e.mailCheck();
   System.out.println("Weekly Pay: " + e.computePay());
}

适用场景

  1. 代码复用:在抽象类中定义通用方法(如日志、验证逻辑),子类直接继承使用。

  2. 统一接口:定义一组必须由子类实现的抽象方法,确保行为一致性。

  3. 共享状态:抽象类可维护成员变量和构造逻辑,适合需要共享初始化的场景。

与接口的区别

  • 抽象类可包含状态(成员变量)[&和构造方法&],接口主要定义行为契约。

  • 一个类只能继承一个抽象类,但可实现多个接口。

  • 接口更适合多继承解耦协议 ,抽象类更适合代码复用与状态共享

注意事项

  • 抽象类不能用 new 实例化。

  • 设计时应确保抽象类有明确的继承价值,否则可直接使用接口。

  • 在 Java 8+ 中,接口也可有默认方法,但抽象类依然在需要状态和构造的场景中更优。

相关推荐
计算机学姐2 小时前
基于Python的高校后勤报修系统【2026最新】
开发语言·vue.js·后端·python·mysql·django·flask
GSDjisidi2 小时前
日本IT行业|一些it資格证书分享解析,一篇通读
开发语言·面试·职场和发展
南山乐只2 小时前
Spring Boot 2.x => 3.x 升级指南
java·spring boot·后端
任子菲阳2 小时前
学Java第五十五天——多线程&JUC
java·开发语言
yaoxin5211232 小时前
265. Java 集合 - LinkedList vs ArrayList 插入性能实战对比分析
java·开发语言
猫猫的小茶馆2 小时前
【ARM】VSCode和IAR工程创建
c语言·开发语言·arm开发·ide·vscode·stm32·嵌入式硬件
测试人社区—小叶子2 小时前
Rust会取代C++吗?系统编程语言的新较量
运维·开发语言·网络·c++·人工智能·测试工具·rust
txwtech2 小时前
第20篇 python如何找到pyd文件的
开发语言·python
古城小栈2 小时前
Java 应对 Rust 竞争的 性能优化策略
java·性能优化·rust