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

Java 接口入门学习笔记:从概念到简单实践

作为一名正在学习 Java 的学生,最近在接触 “接口” 这个概念时,总觉得它有点抽象。不过跟着教程梳理后,发现接口其实是 Java 里很基础也很实用的知识。今天就把自己的学习心得整理出来,希望能帮到和我一样刚入门的同学。

一、先搞懂:接口到底是什么?

简单来说,接口(Interface)是 Java 中的一种特殊结构,它像一份 “协议” 或者 “说明书”,规定了某个类应该有哪些方法,但不规定这些方法具体怎么实现。

举个生活中的例子:我们用的充电接口,不管是手机充电口还是电脑充电口,都有明确的 “规则”—— 比如插脚数量、电压规格。这就像接口规定了 “充电” 这个功能的标准;而不同品牌的充电器(就像不同的类),只要遵守这个接口规则,就能给设备充电,具体怎么实现充电(比如快充技术),则由充电器自己决定。

二、Java 接口的基础语法

在 Java 中,定义接口要用interface关键字,语法很简单:

// 定义一个接口
public interface 接口名 {// 常量(接口中的变量默认是public static final)数据类型 常量名 = 常量值;// 抽象方法(接口中的方法默认是public abstract)返回值类型 方法名(参数列表);
}

比如,我们可以定义一个 “能跑的” 接口:

// 定义“跑”的接口
public interface Runnable {// 常量:默认跑步速度(单位:米/秒)double DEFAULT_SPEED = 5.0;// 抽象方法:定义“跑”的行为void run();
}

这里要注意两个点:

  • 接口里的变量默认被public static final修饰,所以必须初始化,而且不能被修改(相当于常量);
  • 接口里的方法默认被public abstract修饰,只有方法声明,没有方法体(不能写{})。

三、如何使用接口?——“实现” 接口

接口不能直接创建对象,必须由其他类 “实现”(遵守接口的规则)。实现接口要用implements关键字,并且必须实现接口中所有的抽象方法

语法如下:

// 实现接口
public class 类名 implements 接口名 {// 实现接口中的所有抽象方法@Overridepublic 返回值类型 方法名(参数列表) {// 具体实现逻辑}
}

还是用上面的 “Runnable” 接口举例,我们可以让 “人” 和 “狗” 这两个类实现它: 

// 人类实现“跑”的接口
public class Person implements Runnable {@Overridepublic void run() {// 实现“人跑步”的逻辑System.out.println("人用两条腿跑步,速度是" + DEFAULT_SPEED + "米/秒");}
}// 狗类实现“跑”的接口
public class Dog implements Runnable {@Overridepublic void run() {// 实现“狗跑步”的逻辑(狗跑得比默认速度快)System.out.println("狗用四条腿跑步,速度是8.0米/秒");}
}

这样一来,PersonDog都遵守了Runnable接口的规则(都有run()方法),但实现方式不同,很灵活。

四、为什么要学接口?—— 接口的核心作用

作为学生,刚开始可能会疑惑:有了类和继承,为什么还要用接口?其实接口有两个很重要的作用:

  1. 统一标准,实现 “多态”
    不同的类只要实现了同一个接口,就可以被当作接口类型来使用。比如上面的PersonDog,都可以被赋值给Runnable类型的变量:

  2. public class Test {public static void main(String[] args) {// 多态:不同对象可以统一用接口类型接收Runnable runner1 = new Person();Runnable runner2 = new Dog();// 调用run()方法,会执行各自的实现逻辑runner1.run(); // 输出:人用两条腿跑步,速度是5.0米/秒runner2.run(); // 输出:狗用四条腿跑步,速度是8.0米/秒}
    }

  3. 这样做的好处是:如果后续需要新增一个 “会跑的” 类(比如Cat),只要实现Runnable接口,就可以直接用在需要Runnable类型的地方,不用修改原有代码 —— 这在实际开发中能大大降低代码的耦合度。

  4. 弥补 Java “单继承” 的限制
    Java 中一个类只能继承一个父类(单继承),但可以同时实现多个接口(用逗号分隔)。比如:

    // 定义“跳”的接口
    public interface Jumpable {void jump();
    }// 一个类可以同时实现多个接口
    public class Rabbit implements Runnable, Jumpable {@Overridepublic void run() {System.out.println("兔子蹦蹦跳跳地跑");}@Overridepublic void jump() {System.out.println("兔子跳得很高");}
    }

 

这样,Rabbit类就同时拥有了 “跑” 和 “跳” 的能力,比单继承更灵活。 

五、新手常见问题:接口和抽象类有什么区别?

刚开始学的时候,很容易把接口和抽象类(带抽象方法的类)搞混。这里用一个表格简单对比:

对比维度接口(Interface)抽象类(Abstract Class)
定义关键字interfaceabstract class
继承 / 实现方式类用implements实现,可多实现类用extends继承,只能单继承
方法实现不能有方法体(抽象方法)可以有抽象方法,也可以有普通方法
变量只能是常量(默认public static final可以有普通变量,也可以有常量
核心作用定义标准,实现多态和多实现抽取共性,作为父类统一管理

简单总结:如果需要定义 “标准”,让多个不相关的类遵守,就用接口;如果需要抽取多个类的共性(包括方法实现),就用抽象类。

五、写在最后:接口在实际开发中的作用

虽然现在我们写的代码比较简单,但接口在实际项目中非常重要:

  • 比如 Java 中的List接口(集合框架),规定了 “列表” 的标准方法(add()get()等),而ArrayListLinkedList等类实现了它,我们可以根据需求选择不同的实现类,却不用改调用代码;
  • 再比如开发中的 “分层架构”,接口可以用来定义 “服务层” 的标准,让 “实现层” 自由替换(比如从本地存储换成数据库存储),不用修改上层代码。

作为学生,刚开始不用追求复杂用法,先掌握 “接口定义→类实现→使用多态” 的基础流程,慢慢在练习中理解它的设计思想就好。

如果有错误,欢迎大家指出呀!一起加油学 Java~

 

 

 

 

 

http://www.dtcms.com/a/303505.html

相关文章:

  • ts学习3
  • Microsoft 365中的Compromised User Detection功能深度解析:智能识别与防护用户账户安全的利器
  • 极速保鲜+ERP数字化,深圳“荔枝出海”驶入外贸订单管理快车道
  • 2023.2.2版IDEA安装教程(ideaIU-2023.2.2.win.exe详细步骤)Windows电脑一键安装指南
  • 二层环路与三层环路:原理、区别与解决方案全解析
  • MacBook IOS操作系统格式化U盘FAT32
  • 铜金矿数据分组优化系统设计与实现
  • 前端基础之《Vue(25)—Vue3简介》
  • Go 原理之 GMP 并发调度模型
  • it is not annotated with @ClientEndpoint“
  • 【学习路线】Android开发2025:从入门到高级架构师
  • 拓扑排序算法
  • LeetCode 85. 最大矩形
  • Nginx 四层(stream)反向代理 + DNS 负载均衡
  • 回滚日志-undo log
  • Resilience4j 实战—使用方式及配置详解
  • 如何利用机器学习分析筛选生物标记物
  • 【机器学习】第八章 模型评估及改进
  • C++入门自学Day2-- c++类与对象(初识)
  • Redis做混沌测试都需要测哪些场景?预期如何?
  • Java项目:基于SSM框架实现的进销存管理系统【ssm+B/S架构+源码+数据库+毕业论文+远程部署】
  • # Android 15 修改系统源码指定安装源
  • yolo 目标检测600类目标
  • 免费版酒店收银系统弹窗在押金原路退回流程中的应用价值探究 ——仙盟创梦IDE
  • React Router v6 核心组件
  • 关闭 UniGetUI 自动 Pip 更新,有效避免 Anaconda 环境冲突教程
  • 基于Vue3.0+Express的前后端分离的任务清单管理系统
  • Leaflet 综合案例-矢量图层控制
  • 二分查找的「左右为难」:如何优雅地找到数组中元素的首尾位置
  • SQL笔试面试