Java之接口(Interface)用法及说明
Java 接口(Interface)
接口的本质: 接口是一种比抽象类更“纯粹”的抽象类型。它就像是一份 “通用契约” 或 “行为标准” ,只规定“能做什么”,而不关心“具体怎么做”。
接口的核心作用
- 约束与规范:定义一套标准,强制要求实现类必须遵守。
- 扩展能力:弥补了 Java 类“单继承”的局限,让一个类可以实现多个接口,从而具备多种能力。
- 解耦:将“使用者”和“实现者”分离。面向接口编程,依赖的是抽象的契约,而不是具体的实现类,这大大提高了代码的灵活性和可维护性。
接口的定义与成员规则
- 抽象方法:接口中的普通方法默认都是
public abstract修饰的(即使省略不写,编译器也会自动加上)。(注:从 Java 8 开始,接口中允许定义带有方法体的default和static方法。) - 全局常量:接口中定义的属性(变量)默认都是
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 接口的规范(实现了接口),电脑就能识别并使用它们。这就是接口“约束”与“多态”的完美体现,也极大地降低了设备与电脑之间的耦合度。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
mybatis plus自动生成代码tinyint(1)自动转换为Boolean的问题及解决
这篇文章主要介绍了mybatis plus自动生成代码tinyint(1)自动转换为Boolean的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-08-08
SpringBoot Starter机制及整合tomcat的实现详解
这篇文章主要介绍了SpringBoot Starter机制及整合tomcat的实现,我们知道SpringBoot自己在“后台”帮我们配置了很多原本需要我们手动去的东西,至于这个“后台”是啥,就是Starter机制2022-09-09
idea中ctrl+shift+f(在文件中查找)失效问题及解决过程
这段描述主要讲解了解决Win1微软键盘在Idea中按键无效的问题,以及搜狗输入法简繁体切换快捷键的关闭方法,帮助用户优化输入体验2026-05-05


最新评论