温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

抽象类与具体类区别在哪

发布时间:2026-08-30 21:33:08 来源:亿速云 阅读:87 作者:小樊 栏目:编程语言

抽象类(Abstract Class)和具体类(Concrete Class)是面向对象编程中两个重要概念,主要区别体现在是否完整、能否实例化、设计目的等方面。下面从多个角度进行说明,并给出示例(以 Java 为例,其他语言如 C++、C# 类似)。


一、核心区别总结

对比点 抽象类 具体类
是否完整 不完整(可能包含抽象方法) 完整(所有方法都有实现)
能否实例化 ❌ 不能 ✅ 可以
是否包含抽象方法 ✅ 可以 ❌ 不可以
主要用途 定义模板、规范、共性 直接描述具体事物
是否能被继承 ✅ 可以 ✅ 可以
是否必须被继承 通常是 不一定

二、抽象类(Abstract Class)

定义

抽象类是用 abstract 修饰的类,用来表示**“某类事物的抽象概念”**,而不是具体对象。

特点

  1. 不能直接创建对象
  2. 可以包含抽象方法(没有方法体)
  3. 也可以包含具体方法、属性、构造方法
  4. 一般用于被继承

示例(Java)

abstract class Animal {
    String name;

    public Animal(String name) {
        this.name = name;
    }

    // 抽象方法
    public abstract void sound();

    // 具体方法
    public void eat() {
        System.out.println(name + "在吃东西");
    }
}

抽象类不能直接使用:

// Animal a = new Animal("动物"); ❌ 编译错误

三、具体类(Concrete Class)

定义

具体类是实现了所有方法、可以直接使用的类

特点

  1. ✅ 可以被实例化
  2. ✅ 所有方法都有实现
  3. ✅ 通常是抽象类的子类
  4. ✅ 描述具体事物

示例

class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }

    @Override
    public void sound() {
        System.out.println(name + "在汪汪叫");
    }
}

使用:

Animal dog = new Dog("小狗");
dog.sound(); // 小狗在汪汪叫
dog.eat();

四、设计层面的区别(理解重点)

抽象类:做什么(What)

  • 表示“是什么类型”
  • 定义规范和共性
  • 强调 “必须做什么”

具体类:怎么做(How)

  • 表示“具体实例”
  • 提供实现细节
  • 强调 “如何完成”

五、形象类比

抽象类 具体类
车(概念) 宝马、奔驰
形状 圆形、矩形
员工 程序员、产品经理

六、常见面试回答(简洁版)

抽象类不能直接实例化,可能包含抽象方法,用于定义子类的公共规范;
具体类可以被实例化,所有方法都有实现,用于描述具体对象。
抽象类侧重抽象和继承,具体类侧重直接使用。


如果你愿意,我也可以:

  • C++ / Python / C# 举例
  • 抽象类 vs 接口
  • 结合 设计模式 说明抽象类的使用场景
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI