• Java中有接口了为什么还需要有抽象类,抽象类和普通类和接口,三者之间有什么区别和联系


    在 Java 中,接口、抽象类和普通类都是不同的概念,各自有其特定的用途和特性。了解它们之间的区别和联系有助于更好地利用 Java 的面向对象编程特性。

    接口(Interface)

    1. 定义:

      • 接口是一种完全抽象的类,它允许声明方法但不允许实现它们(直到 Java 8 引入默认方法之前)。
    2. 用途:

      • 用于定义一个合同或协议,类可以实现一个或多个接口,从而承诺提供接口中定义的行为。
    3. 特性:

      • 从 Java 8 开始,接口可以包含默认方法和静态方法。
      • 只能有静态和非静态抽象方法。
      • 成员变量默认是 public static final。

    抽象类(Abstract Class)

    1. 定义:

      • 抽象类是不能实例化的类,它可以包含抽象方法(没有具体实现的方法)和具体方法。
    2. 用途:

      • 用于提供一个基础类,其中包含一些共享的代码和/或仅提供方法声明的抽象方法。
    3. 特性:

      • 可以有构造函数、字段、方法(包括具体方法和抽象方法)。
      • 可以有访问修饰符,用于控制子类的继承。
      • 子类必须实现所有抽象方法,除非子类也是抽象类。

    普通类(Class)

    1. 定义:

      • 普通类是可以实例化的类,它定义了对象的结构和行为。
    2. 用途:

      • 用于创建具体的对象实例,实现具体的业务逻辑。
    3. 特性:

      • 可以包含字段、方法、构造函数等。
      • 可以继承其他类(单继承)并实现多个接口。

    区别和联系

    • 共同点:

      • 接口和抽象类都不能被实例化。
      • 它们都可以包含抽象方法,用于指定子类必须实现的行为。
    • 不同点:

      • 抽象类可以包含具体的方法和字段,而接口只能包含抽象方法(直到 Java 8 引入默认方法和静态方法)。
      • 类可以实现多个接口,但只能继承一个抽象类。
      • 接口成员默认是 public,而抽象类成员可以有不同的访问级别。
    • 使用场景:

      • 如果你想定义一个不允许实例化的基础类并提供一些共享代码,使用抽象类。
      • 如果你想定义一个合同或协议,让多个类可以实现但不提供共享代码,使用接口。

    简而言之,接口和抽象类在 Java 中都用于定义不能直接实例化的类型,并允许其他类继承或实现它们,从而共享或承诺特定的行为。普通类则是可以直接实例化的具体实现,提供了具体的业务逻辑和数据结构。

  • 相关阅读:
    关于安装PsBody-mesh0.4【MPI-IS/mesh的make all报错】踩坑实录
    深夜 2 点,差点魂归故土
    Vu3笔记_02setup与常用的Composition API(组合式API)
    Git:下载和安装
    Linux xargs命令
    Android-IO加解密核心与dex文件改造过程分析
    【软考学习4】计算机构成——CPU 结构、Flynn 分类法、CISC和RISC
    self xss+csrf dvwa靶机复现
    mysql—各种函数的使用
    2.3 初探Hadoop世界
  • 原文地址:https://blog.csdn.net/weixin_50503886/article/details/134549002