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()
方法的具体实现;- 继承自
Vehicle
的drive()
方法已有实现; - 所以该类没有未实现的方法,可以正常实例化。
FancyCar car = new FancyCar();
📌 一句话总结:只要不是抽象类,就可以叫 concrete class。
4. 总结
在这篇简短的教程中,我们学习了什么是 concrete class,并了解了它与接口、抽象类的区别。
类型 | 是否可实例化 | 是否含未实现方法 |
---|---|---|
Concrete Class | ✅ 是 | ❌ 否 |
Abstract Class | ❌ 否 | ✅ 是 |
Interface | ❌ 否 | ✅ 是 |
希望这篇笔记对你回顾 Java 基础有所帮助。下次看到别人说“具体类”的时候,你就知道它到底意味着什么了 😎