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 接口的规范(实现了接口),电脑就能识别并使用它们。这就是接口“约束”与“多态”的完美体现,也极大地降低了设备与电脑之间的耦合度。

总结

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

相关文章

  • kotlin改善java代码实例分析

    kotlin改善java代码实例分析

    我们给大家整理了关于kotlin改善java代码的相关实例以及操作的详细方法,有需要的读者们参考下。
    2018-03-03
  • Spring boot项目打包成jar运行的二种方法

    Spring boot项目打包成jar运行的二种方法

    这篇文章主要给大家介绍了关于Spring boot项目打包成jar运行的二种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • mybatis plus自动生成代码tinyint(1)自动转换为Boolean的问题及解决

    mybatis plus自动生成代码tinyint(1)自动转换为Boolean的问题及解决

    这篇文章主要介绍了mybatis plus自动生成代码tinyint(1)自动转换为Boolean的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • SpringBoot Starter机制及整合tomcat的实现详解

    SpringBoot Starter机制及整合tomcat的实现详解

    这篇文章主要介绍了SpringBoot Starter机制及整合tomcat的实现,我们知道SpringBoot自己在“后台”帮我们配置了很多原本需要我们手动去的东西,至于这个“后台”是啥,就是Starter机制
    2022-09-09
  • Druid数据库连接池监控使用及说明

    Druid数据库连接池监控使用及说明

    Druid是Java数据库连接池,具有监控和扩展功能,性能好,自带监控页面,支持密码加密、SQL执行日志等,Druid已经在阿里巴巴部署了超过600个应用
    2025-12-12
  • Java8对List排序的方法大全

    Java8对List排序的方法大全

    这篇文章主要给大家介绍了关于Java8对List排序的方法大全,其实Java针对数组和List的排序都有实现,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Java中防止数据重复提交超简单的6种方法

    Java中防止数据重复提交超简单的6种方法

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,这篇文章主要给大家介绍了关于Java中防止数据重复提交超简单的6种方法,需要的朋友可以参考下
    2021-11-11
  • Java设计模式之备忘录模式

    Java设计模式之备忘录模式

    这篇文章介绍了Java设计模式之备忘录模式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • win7下安装 JDK 基本流程

    win7下安装 JDK 基本流程

    这篇文章主要介绍了win7下安装 JDK 基本流程,需要的朋友可以参考下
    2014-05-05
  • idea中ctrl+shift+f(在文件中查找)失效问题及解决过程

    idea中ctrl+shift+f(在文件中查找)失效问题及解决过程

    这段描述主要讲解了解决Win1微软键盘在Idea中按键无效的问题,以及搜狗输入法简繁体切换快捷键的关闭方法,帮助用户优化输入体验
    2026-05-05

最新评论