• 接口与抽象类的区别


    Java中的接口(Interface)和抽象类(Abstract Class)都是实现抽象化的关键机制,但它们在用途和功能上有着明显的区别。以下是接口和抽象类之间的主要区别:
    在这里插入图片描述

    1. 抽象类(Abstract Class)

      • 含有抽象方法:抽象类可以有抽象方法(没有具体实现的方法)和具体方法(有实现的方法)。
      • 构造函数:抽象类可以有构造函数,用于初始化类的一些成员变量或执行其他初始化操作。
      • 状态维护:抽象类可以有成员变量,因此可以维护状态。
      • 继承:一个类只能继承一个抽象类,因为Java不支持多重继承。
      • 默认方法实现:抽象类允许提供某些方法的默认实现,子类可以直接使用或覆盖这些方法。
      • 访问修饰符:抽象类中的方法可以有不同的访问修饰符(public, protected, private)。
    2. 接口(Interface)

      • 纯抽象方法:接口只能有抽象方法(在Java 8之前),所有方法默认为public abstract类型。
      • 无状态:接口不能有成员变量(除了static和final变量)。
      • 实现:一个类可以实现多个接口,从而部分解决了Java不支持多重继承的限制。
      • 默认方法和静态方法(Java 8及之后):Java 8引入了接口的默认方法和静态方法,允许接口提供方法的实现。
      • 只有public成员:接口中的所有成员都是public的,无法定义private或protected成员。
      • 函数式接口(Java 8及之后):只有一个抽象方法的接口称为函数式接口,可以通过lambda表达式实例化。
    3. 使用场景

      • 抽象类:当几个类之间存在较高的共享代码时,通常使用抽象类。抽象类更适合表达事物的层次结构,用于建模共享特征。
      • 接口:当需要指定一组应该由类实现的方法,但不关心这些方法的具体实现时,使用接口。接口更多地用于表达“能做什么”(功能),而不是“是什么”(性质)。
    4. 总结

      总的来说,抽象类和接口都可以用于实现抽象化,但它们的用途和实现方式不同。抽象类更适合用于对象的共同行为和状态的表示,而接口更适合用于定义对象的功能。随着Java 8引入的默认方法,接口的功能得到了扩展,但仍然保持了与抽象类的基本区别。

  • 相关阅读:
    09-React路由使用(React Router 6)
    java毕业设计火车订票管理系统mybatis+源码+调试部署+系统+数据库+lw
    CentOS7安装Docker遇到的问题笔记
    【UE】在游戏运行时,通过选择uasset来生成静态网格体
    Unity编辑器扩展——PropertyDrawer
    基于ESP8266和微型舵机的远程灯控制系统
    JavaWeb-解析Servlet的适配器模式和Servlet配置
    CRM、DMP、CDP都是什么?
    数组的使用
    基于社交网络优化的BP神经网络(分类应用) - 附代码
  • 原文地址:https://blog.csdn.net/m0_54187478/article/details/134515610