温馨提示×

温馨提示×

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

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

抽象类和普通类区别是什么

发布时间:2026-09-18 23:46:04 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

在面向对象编程(如 Java、C++、Python 等)中,**抽象类(Abstract Class)和普通类(Concrete Class)**主要有以下区别:


1. 能否被实例化

  • 普通类:可以直接通过 new 创建对象。
  • 抽象类:不能直接实例化,只能通过被继承、由子类创建对象。
// 普通类
class Animal {
}
Animal a = new Animal(); // ✅ 可以

// 抽象类
abstract class Shape {
}
// Shape s = new Shape(); // ❌ 编译错误

2. 是否包含抽象方法

  • 普通类:所有方法都有具体实现。
  • 抽象类:可以包含抽象方法(只有声明,没有实现)。
abstract class Animal {
    abstract void sound(); // 抽象方法
}

普通类不能包含抽象方法。


3. 设计目的不同

  • 普通类:用于直接描述具体事物,提供完整功能。
  • 抽象类:用于提取共性、定义规范,作为其他类的基类。

例如:

  • Dog、Cat 是普通类
  • Animal 是抽象类,定义“动物都会叫”,但不关心怎么叫

4. 继承与使用方式

  • 普通类:可被继承,也可直接使用。
  • 抽象类:通常必须被继承,子类需实现其抽象方法(除非子类也是抽象类)。
class Dog extends Animal {
    void sound() {
        System.out.println("汪汪");
    }
}

5. 成员变量与构造方法

  • 两者都可以有:
    • 成员变量
    • 构造方法
    • 普通方法
  • 抽象类的构造方法不能单独使用,只能在子类构造时调用。

简单对比表

对比项 普通类 抽象类
能否实例化 ✅ 能 ❌ 不能
是否有抽象方法 ❌ 不能有 ✅ 可以有
是否可直接使用 ✅ 可以 ❌ 一般用于继承
设计目的 具体实现 规范 + 复用

一句话总结

普通类是“能直接用的完整类”,抽象类是“不能直接用、用来被继承的半成品类”。

如果你用的是某一种语言(Java / C++ / Python),我也可以结合具体语法讲。

向AI问一下细节

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

AI
助
手