Java之接口(Interface)用法及说明

 更新时间:2026年05月29日 10:48:18   作者:*〆苗小豪ゝ  
这段描述聚焦于Java接口的核心概念及其在编程中的应用,强调接口作为行为标准和契约的重要性,通过多实现机制增强类的扩展能力,同时减少耦合提高代码灵活性,文章通过USB接口的比喻生动解释了接口的约束与多态特性

Java 接口(Interface)

接口的本质: 接口是一种比抽象类更“纯粹”的抽象类型。它就像是一份 “通用契约”“行为标准” ,只规定“能做什么”,而不关心“具体怎么做”。

接口的核心作用

  • 约束与规范:定义一套标准,强制要求实现类必须遵守。
  • 扩展能力:弥补了 Java 类“单继承”的局限,让一个类可以实现多个接口,从而具备多种能力。
  • 解耦:将“使用者”和“实现者”分离。面向接口编程,依赖的是抽象的契约,而不是具体的实现类,这大大提高了代码的灵活性和可维护性。

接口的定义与成员规则

  • 抽象方法:接口中的普通方法默认都是 public abstract 修饰的(即使省略不写,编译器也会自动加上)。(注:从 Java 8 开始,接口中允许定义带有方法体的 defaultstatic 方法。)
  • 全局常量:接口中定义的属性(变量)默认都是 public static final 修饰的,即全局静态常量。必须在声明时赋值,且不可修改。
  • 无构造方法:接口不能被实例化(不能 new 接口),因此接口中没有构造方法

接口的实现(Implements)

  • 多实现机制:一个类可以通过 implements 关键字来实现一个或多个接口(多个接口用逗号隔开)。
  • 强制重写:如果一个普通类实现了接口,就必须重写接口中所有的抽象方法。如果该类没有重写所有抽象方法,则这个类必须被声明为抽象类。
  • 访问权限:接口中的方法默认是 public 的,实现类在重写时,访问权限不能低于接口的权限,所以必须显式声明为 public

接口与继承的关系

  • 类与类:只能是单继承(extends)。
  • 类与接口:可以多实现(implements)。
  • 接口与接口:接口之间支持多继承(一个接口可以 extends 多个父接口)。

代码示例:多实现与不可实例化

接口就像一份“行为说明书”,类实现了接口就必须照着做。同时,接口本身是抽象的,无法直接创建对象。

// 定义两个接口:代表两种不同的能力
interface Flyable {
    void fly();
}
interface Swimmable {
    void swim();
}

// 一个类可以实现多个接口(多实现),同时具备飞行和游泳的能力
class Duck implements Flyable, Swimmable {
    @Override
    public void fly() {
        System.out.println("鸭子在天上飞");
    }
    @Override
    public void swim() {
        System.out.println("鸭子在水里游");
    }
}

public class Test {
    public static void main(String[] args) {
        // 接口不能被实例化!以下代码会报错:
        // Flyable f = new Flyable();  编译错误
        
        // 正确的做法是:创建实现类的对象
        Duck duck = new Duck();
        duck.fly();
        duck.swim();
    }
}

生活案例:USB 接口

接口在现实生活中的完美体现就是电脑的 USB 接口

电脑主板(系统)定义好了 USB 接口的规范(能传输数据、能供电),它不需要知道具体插上来的是什么设备。

  • 鼠标实现了 USB 接口,插上就能控制光标。
  • 键盘实现了 USB 接口,插上就能输入文字。
  • U盘实现了 USB 接口,插上就能读写文件。

不管是鼠标、键盘还是U盘,只要它们符合 USB 接口的规范(实现了接口),电脑就能识别并使用它们。这就是接口“约束”与“多态”的完美体现,也极大地降低了设备与电脑之间的耦合度。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java实战之用springboot+netty实现简单的一对一聊天

    Java实战之用springboot+netty实现简单的一对一聊天

    这篇文章主要介绍了Java实战之用springboot+netty实现简单的一对一聊天,文中有非常详细的代码示例,对正在学习Java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • MyBatis执行SQL查询的完整流程

    MyBatis执行SQL查询的完整流程

    本文详细介绍了MyBatis SQL执行的完整过程,包括核心对象、代码实现与执行链路,通过编程式调用示例和流程图,展示了从环境配置、SqlSession创建到结果获取的全步骤,需要的朋友可以参考下
    2026-01-01
  • Springboot集成MongoDB无认证与开启认证的配置方式

    Springboot集成MongoDB无认证与开启认证的配置方式

    本文主要介绍了Springboot集成MongoDB无认证与开启认证的配置方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • Java实现的简单数字处理类及用法示例

    Java实现的简单数字处理类及用法示例

    这篇文章主要介绍了Java实现的简单数字处理类及用法,涉及java数字运算相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • Java序列化机制详解

    Java序列化机制详解

    Java 序列化机制是一种将对象转换为字节流的过程,以便在网络上传输或保存到文件中,并能在需要时将字节流还原为对象,这一机制通过实现 java.io.Serializable 接口来实现,同时涉及到一些关键概念和注意事项,需要的朋友可以参考下
    2023-12-12
  • 利用Java实现读取WPS Excel中嵌入的图片

    利用Java实现读取WPS Excel中嵌入的图片

    许多数据文件中可能包含嵌入式图片,这些图片对于数据分析和可视化非常重要,下面我们就来看看如何使用Java读取WPS Excel中嵌入的图片吧
    2024-11-11
  • 解决创建springboot后启动报错:Failed to bind properties under‘spring.datasource‘

    解决创建springboot后启动报错:Failed to bind properties under‘spri

    在Spring Boot项目中,application.properties和application.yml是用于配置参数的两种文件格式,properties格式简洁但不支持层次结构,而yml格式支持层次性,可读性更好,在yml文件中,要注意细节,比如冒号后面需要空格
    2024-10-10
  • IDEA 2020.1.2 安装教程附破解教程详解

    IDEA 2020.1.2 安装教程附破解教程详解

    这篇文章主要介绍了IDEA 2020.1.2 安装教程附带破解教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • idea中maven使用tomcat7插件运行run报错Could not start Tomcat问题

    idea中maven使用tomcat7插件运行run报错Could not start T

    这篇文章主要介绍了idea中maven使用tomcat7插件运行run报错Could not start Tomcat问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • 利用java开发简易版扫雷游戏

    利用java开发简易版扫雷游戏

    这篇文章主要介绍了利用java开发一个丐版扫雷游戏,喜欢玩扫雷的小伙伴们一定要试试哦,对正在学习java开发的小伙伴们也有一定帮助,需要的朋友可以参考下
    2021-04-04

最新评论