接口(Interface)、抽象类(Abstract Class)与实体类(Concrete Class)对比
2025年6月25日小于 1 分钟
接口(Interface)、抽象类(Abstract Class)与实体类(Concrete Class)对比
🧠 一句话总结
- 接口(Interface):定义行为规范,没有具体实现。
- 抽象类(Abstract Class):部分实现+规范,不能直接实例化。
- 实体类(Concrete Class):完整实现,可以实例化使用。
📚 基本定义
类型 | 说明 |
---|---|
接口 | 只声明方法和属性,不包含实现 |
抽象类 | 可包含抽象方法和具体方法,作为子类的模板 |
实体类 | 具体类,包含完整实现,可以被实例化 |
🧬 代码示例(TypeScript)
// 接口:定义规范
interface IShape {
area(): number;
}
// 抽象类:部分实现 + 规范
abstract class Shape implements IShape {
abstract area(): number;
describe(): void {
console.log('This is a shape.');
}
}
// 实体类:具体实现
class Circle extends Shape {
constructor(public radius: number) {
super();
}
area(): number {
return Math.PI * this.radius ** 2;
}
}
const c = new Circle(5);
console.log(c.area()); // 78.53981633974483
c.describe(); // This is a shape.