当前位置: 首页 > news >正文

关于接口相关知识

一 简介
接口 = 一套纯规则 / 纯规范
只规定「能做什么」,不规定
就像说明书:规定手机能打电话、能上网,但不写内部怎么实现
接口的本质:行为的抽象。
二、接口的基本语法(Java 8+)
java
运行
// 定义接口
public interface 接口名 {
// 常量(默认 public static final,可省略)
int MAX_NUM = 100;

// 抽象方法(默认 public abstract,可省略)
void method1();// 默认方法(Java 8+,有实现)
default void defaultMethod() {// 方法体
}// 静态方法(Java 8+)
static void staticMethod() {// 方法体
}// 私有方法(Java 9+,供内部默认方法调用)
private void privateMethod() {// 方法体
}

}
三、接口的核心特点
接口不能实例化(不能 new 接口)
类可以实现多个接口(Java 唯一支持「多继承」的方式)
接口里的变量默认是 public static final 常量
接口里的普通方法默认是 public abstract 抽象方法
一个类实现接口,必须重写所有抽象方法(除非是抽象类)
接口可以继承多个接口
四、最常用场景:类实现接口
示例:定义一个「跑步」接口
java
运行
// 接口:规定能跑
public interface Run {
void run(); // 抽象方法
}
类实现接口
java
运行
// 人类实现 Run 接口
public class Person implements Run {
@Override
public void run() {
System.out.println("人用双腿跑步");
}
}

// 汽车也实现 Run 接口
public class Car implements Run {
@Override
public void run() {
System.out.println("汽车用轮子跑");
}
}
多态使用(接口最强大的地方)
java
运行
public class Test {
public static void main(String[] args) {
Run r1 = new Person();
Run r2 = new Car();

    r1.run();r2.run();
}

}
输出:
plaintext
人用双腿跑步
汽车用轮子跑
五、Java 8+ 接口新特性(非常重要)

  1. 默认方法(default)
    有方法体
    实现类可以不重写,直接用
    用于给接口扩展功能,不破坏原有代码
    java
    运行
    public interface Swim {
    void swim();

    default void breathe() {
    System.out.println("在水里呼吸");
    }
    }

  2. 静态方法(static)
    属于接口本身
    用 接口名.方法名() 调用
    实现类不能继承
    java
    运行
    static void help() {
    System.out.println("游泳帮助");
    }

// 调用
Swim.help();
3. 私有方法(private,Java 9+)
供接口内部默认方法 / 静态方法复用
外部无法访问
六、接口 vs 抽象类
表格
特性 接口(interface) 抽象类(abstract class)
继承 支持多实现 只能单继承
方法 Java8+:抽象、默认、静态、私有 抽象、普通、静态、私有
变量 只能是常量 普通成员变量、常量都可以
构造器 没有 有构造器
核心用途 定义行为规范 模板设计、代码复用
一句话区分:
接口:能干什么
抽象类:是什么 + 一部分功能
七、接口的实际用途(开发中为什么要用?)
统一规范:所有实现类必须遵守同一套方法
解耦代码:面向接口编程,不依赖具体实现
多实现:弥补 Java 单继承的不足
框架核心:Spring、MyBatis、SpringBoot 全是面向接口
多态:让代码更灵活、可扩展
八、快速总结(背会就能用)
接口是规范,不是类
用 implements 实现,可多实现
抽象方法必须重写
默认方法可直接用
静态方法属于接口本身
面向接口编程 = 高内聚、低耦合

http://www.jsqmd.com/news/752393/

相关文章:

  • 去水印不破坏原图,哪些方法真的有效?2026最新实测去水印工具推荐 - 爱上科技热点
  • 别再只跑Demo了!用YOLOv5s训练你自己的水果检测模型(附数据集和PyQt界面代码)
  • 深入AMD Ryzen硬件底层:SMU Debug Tool完全指南与实战应用
  • 炉石传说脚本:终极自动化卡组配置与智能对战完全指南
  • ESP32S3+Arduino搞定0.96寸OLED屏:从SPI接线到显示‘Hello World’的保姆级避坑指南
  • 如何在Windows上使用FlicFlac:终极音频格式转换完全指南
  • 2026年3月野外求生技能培训挑战营口碑推荐,速来了解,2026夏令营,野外求生技能培训特训营哪家靠谱 - 品牌推荐师
  • 体验Taotoken在多模型间智能路由与容灾带来的稳定性
  • 如何用AntiDupl.NET解决图片重复问题:5步释放硬盘空间的完整方案
  • LinkSwift:九大网盘直链解析工具,免费高速下载的终极解决方案
  • 5分钟搞定Windows 11安装限制:MediaCreationTool.bat终极解决方案
  • 用Python和NumPy手把手实现你的第一个多臂老虎机(附完整代码和可视化)
  • 不为流量折腰,海棠山铁哥《第一大道》凭初心抗衡营销至上的《灵魂摆渡・浮生梦》
  • 新手开发者首次使用 Taotoken 模型广场完成模型选型的步骤
  • VuePress/Webpack项目构建时内存爆了?手把手教你配置`--max-old-space-size`和`increase-memory-limit`插件
  • 快手号水印去除教程:去掉快手号水印的方法有哪些?2026最新实测全攻略 - 爱上科技热点
  • 5分钟掌握GPU显存稳定性测试:memtest_vulkan完整实战教程
  • STM32H7开发笔记(一):前言 - EM
  • 抖音去水印提取工具哪个好用?抖音去水印提取操作方法2026最新实测汇总 - 爱上科技热点
  • 基于Next.js的全栈CRM系统架构设计与工程实践
  • 2026年云端保姆级流程:如何搭建OpenClaw?Coding Plan配置及大模型API Key接入
  • 3分钟快速上手BetterNCM:一键解锁网易云音乐隐藏功能的终极指南
  • FreeRTOS消息队列实验中的按键“失灵”谜案:一次调用引发的后果
  • 从驱动安装到流控配置:一份给单片机新手的CH9101与FT232R实战避坑指南
  • 自动驾驶视频生成的3D高斯泼溅优化实践
  • 飞腾ARM服务器离线部署指南:手把手教你为银河麒麟V10 SP2搭建私有yum仓库
  • 5分钟极速搞定!Axure RP免费中文语言包完整安装指南 [特殊字符]
  • 2026年腾讯云零基础教程:OpenClaw如何搭建?Coding Plan配置与大模型接入流程
  • 2026年初中英语考纲词汇表(1600词)PDF电子版
  • 5步掌握semi-utils:从批量水印到专业摄影作品展示的完整实践