抽象类和接口的区别

接口 (Interface)

  • 定义:使用 ​​interface​​ 关键字定义。
  • 实例化:接口不能被直接实例化。
  • 实现:一个类可以实现多个接口。
  • 方法:Java 8 之前,接口中只能包含抽象方法(默认为 ​​public abstract​​)。Java 8 之后,接口可以包含默认方法(​​default​​)和静态方法(​​static​​),并且这些方法需要有方法体。
  • 成员变量:接口中只能有常量,即 ​​public static final​​ 变量,并且需要初始化。
  • 设计思想:主要用于定义行为规范,强调“做什么”。

抽象类 (Abstract Class)

  • 定义:使用 ​​abstract​​ 关键字定义。
  • 实例化:抽象类不能被直接实例化。
  • 继承:一个类只能继承一个抽象类。
  • 方法:抽象类可以包含抽象方法和非抽象方法。非抽象方法需要有方法体。
  • 成员变量:抽象类可以有实例变量和静态变量,包括私有变量。
  • 设计思想:用于表示一种类的继承关系,强调“是什么”,包含共享的代码和通用的行为。

关键区别

  • 继承与实现:   - 抽象类:使用 ​​extends​​ 继承。   - 接口:使用 ​​implements​​ 实现。
  • 多继承:   - 抽象类:一个类只能继承一个抽象类。   - 接口:一个类可以实现多个接口。
  • 方法实现:   - 抽象类:可以包含抽象方法和具体方法。   - 接口:Java 8 之前只能包含抽象方法,Java 8 之后可以包含默认方法和静态方法。
  • 成员变量:   - 抽象类:可以有各种类型的成员变量,包括私有变量。   - 接口:只能有 ​​public static final​​ 常量,并且需要初始化。
  • 设计思想:   - 抽象类:强调“是什么”,包含共享的代码和通用的行为。   - 接口:强调“做什么”,定义行为规范。
  •  

总结

  • 接口:主要用于定义行为规范,允许一个类实现多个接口,增强代码的灵活性。
  • 抽象类:主要用于表示类的继承关系,提供共享的代码和通用的行为,强调“是什么”。

这两种设计模式各有优势,选择使用哪种取决于具体的业务需求和设计目标。

posted @   BookerABC  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示