1. 引言

在本篇快速指南中,我们将深入探讨 Java 中 “Concrete Class”(具体类) 的概念。

首先会给出定义,然后对比接口和抽象类,帮助你更清晰地理解其用途与特点。

2. 什么是 Concrete Class?

Concrete Class 是指可以使用 new 关键字实例化的类。

换句话说,它是一个完整实现了所有方法的类,具备完整的功能实现。

举个例子,假设我们有一个 Car 类:

public class Car {
    public String honk() {
        return "beep!";
    }

    public String drive() {
        return "vroom";
    }
}

由于该类的所有方法都已实现,我们可以直接创建其实例:

Car car = new Car();

JDK 中一些常见的 concrete class 包括:

  • HashMap
  • HashSet
  • ArrayList
  • LinkedList

这些都是可以直接 new 出来的类。

3. Java 抽象 vs 具体类

⚠️ 并不是所有的 Java 类型都会实现全部方法。这种设计上的灵活性,也称为 抽象(abstraction),使得我们可以用更高层次的方式去建模业务逻辑。

在 Java 中,我们可以通过以下两种方式实现抽象:

  • 接口(Interface)
  • 抽象类(Abstract Class)

下面我们就通过对比来更好地理解 concrete class。

3.1. 接口(Interface)

接口是类的一种蓝图,它只包含未实现的方法签名。

例如:

interface Driveable {
    void honk();
    void drive();
}

注意,接口使用的是 interface 关键字而不是 class

因为 Driveable 中的方法都没有具体实现,所以无法使用 new 实例化。

但是,像 Car 这样的 concrete class 可以实现这些方法。

JDK 中常见的接口包括:

  • Map
  • List
  • Set

3.2. 抽象类(Abstract Class)

抽象类是含有未实现方法的类,但它也可以同时拥有已实现的方法。

示例:

public abstract class Vehicle {
    public abstract String honk(); // 未实现

    public String drive() {        // 已实现
        return "zoom";
    }
}

注意关键字 abstract,表明这是一个抽象类。

由于 Vehicle 中存在未实现的方法 honk(),因此不能被实例化。

JDK 中的一些抽象类包括:

  • AbstractMap
  • AbstractList

3.3. 具体类(Concrete Class)

具体类不包含任何未实现的方法,无论这些方法是自己实现的还是从父类继承的,只要每个方法都有具体实现,那它就是 concrete class。

具体类可以像前面的 Car 那样简单,也可以实现接口或继承抽象类:

public class FancyCar extends Vehicle implements Driveable {
    public String honk() { 
        return "beep";
    }
}

在这个例子中:

  • FancyCar 提供了 honk() 方法的具体实现;
  • 继承自 Vehicledrive() 方法已有实现;
  • 所以该类没有未实现的方法,可以正常实例化。
FancyCar car = new FancyCar();

📌 一句话总结:只要不是抽象类,就可以叫 concrete class。

4. 总结

在这篇简短的教程中,我们学习了什么是 concrete class,并了解了它与接口、抽象类的区别。

类型 是否可实例化 是否含未实现方法
Concrete Class ✅ 是 ❌ 否
Abstract Class ❌ 否 ✅ 是
Interface ❌ 否 ✅ 是

希望这篇笔记对你回顾 Java 基础有所帮助。下次看到别人说“具体类”的时候,你就知道它到底意味着什么了 😎


原始标题:Concrete Class in Java