什么时候用抽象类

365bet投注在线 admin 2026-10-10 01:08:11

什么时候用抽象类

发布时间:2026-10-08 09:57:19

来源:亿速云

阅读:93

作者:小樊

栏目:编程语言

在面向对象编程(如 Java、C#、C++ 等)中,抽象类(abstract class)主要用于“抽取共性、约束子类、不能单独实例化”的场景。下面从使用时机、典型场景、与接口的区别三个角度说明。

一、什么时候应该用抽象类

1. 多个类有大量公共代码(属性和方法实现)

如果一些子类有很多重复逻辑,应把公共部分放到抽象类中,避免代码重复。

例子:

abstract class Animal {

String name;

void sleep() {

System.out.println(name + " is sleeping");

}

abstract void sound(); // 子类必须实现

}

Dog 和 Cat 都能复用 sleep()。

2. 需要控制子类的创建方式

抽象类不能被 new,能保证:

使用者必须通过具体子类使用

子类必须遵守某种结构

3. 既想定义“规范”,又想提供“默认实现”

接口只能定义行为(Java 8 前),抽象类可以:

定义抽象方法(强制实现)

提供普通方法(直接复用)

4. 类之间有明显的**“是一个(is-a)”关系**

抽象类适合表达继承体系:

Animal ← Dog

Shape ← Circle

如果是“能做什么”(has-a / can-do),更适合用接口。

二、典型使用场景

✅ 场景 1:模板方法模式

abstract class Game {

void play() {

start();

playGame();

end();

}

abstract void playGame();

}

✅ 场景 2:基础服务类

如:

BaseController

BaseService

AbstractRepository

✅ 场景 3:业务实体继承

abstract class Account

abstract class BankAccount extends Account

abstract class CreditAccount extends Account

三、抽象类 vs 接口(什么时候不用抽象类)

场景

用抽象类

用接口

需要代码复用

✅

❌

需要多继承

❌

✅

定义能力/契约

❌

✅

表达“是什么”

✅

❌

表达“能做什么”

❌

✅

四、一句话总结

当多个类“是一类东西”,并且有共同实现逻辑时,用抽象类;

当只关心“能做什么”,用接口。

如果你有具体语言(Java / C# / Python)或业务场景,我可以给你更贴切的例子。

相关文章

苹果屏幕损坏了在哪里修?选择官方维修中心或零售店最靠谱

手竿钓翘嘴鱼的4个常识性技巧

正在阅读:天涯明月刀手游答题答案是什么?每日答题答案分享天涯明月刀手游答题答案是什么?每日答题答案分享

千锋教育与黑马程序员哪个好_python培训班哪个靠谱

英雄联盟船长叫什么

苹果手机如何用一个手机直播游戏

一无所有的意思、怎么读

网络出现感叹号是什么原因?四招帮你排查办法,轻松搞定网络故障

曾经扬言“非百万富豪不嫁”的相亲女周兰君,现在嫁人了吗