- 今天抽空学习了接口相关的基础知识,学习了一些新的名词:接口、实现,还学到2个关键字interface、implements
- 现实世界有大量的接口,几乎所有的电脑有USB接口,耳机接口,网线接口等等,Java中的接口更像是一种协议和规定,实现了接口的类可以扩展使用接口的功能。
1.接口的语法
| interface 接口名{ |
| |
| |
| } |
| class 类名 implements 接口{ |
| |
| |
| |
| } |
2.接口随版本的变化
- jdk7之前,接口里的所有方法都没有方法体
- jdk8之后接口类可以有静态方法,默认方法default,即接口中可以有方法的具体实现
3.接口注意事项
- 接口不可以被实例化(可以有接口类型的变量,但是不能new接口对象);
- 接口中的所有方法是public方法,接口中的抽象方法可以不用abstract修饰;
- 普通类实现接口,必须将接口中的所有方法实现;
- 抽象类实现接口,可以不用实现接口的方法;
- 一个类可以实现多个接口;
- 接口中的属性必须使用public static final修饰符;
- 接口中的属性访问型式:接口名.属性名;
- 接口不能继承其他的类,但是可以继承多个别的接口;
- 接口的修饰符只能是public和默认,与类的修饰符一样,使用public修饰时需要单独存放于与接口同名的文件中
4.实现接口 VS 继承类
- 接口是对于Java单继承机制的补充
- 子类继承了父类,自动拥有父类的功能
- 如果子类需要扩展功能,可以通过实现接口的方式来扩展
- 继承的价值在于:解决代码的复用性和可维护性
- 接口的价值在于:设计好各种规范,让其它类去实现这些方法
- 接口比继承更加灵活,继承需要满足is-a,接口只需满足like-a
- 接口在一定程度上可以实现代码解耦(接口规范性+动态绑定)
5.接口的多态特性:
- 多态参数:接口类型变量可以指向实现了该接口的类的对象
- 多态数组
- 接口存在多态传递
6.接口代码示例
| public class TestAbstract { |
| public static void main(String[] args) { |
| LittleMonkey a = new LittleMonkey("A"); |
| a.climbing(); |
| a.flying(); |
| a.swimming(); |
| LittleMonkey f = new Little("C"); |
| } |
| } |
| class Monkey { |
| private String name; |
| public Monkey(String name) { |
| this.name = name; |
| } |
| public void climbing() { |
| System.out.println("猴子会爬树"); |
| } |
| public String getName() { |
| return name; |
| } |
| public void setName(String name) { |
| this.name = name; |
| } |
| } |
| interface Fishable { |
| public void swimming(); |
| } |
| interface Birdable { |
| public void flying(); |
| } |
| class LittleMonkey extends Monkey implements Fishable, Birdable{ |
| public LittleMonkey(String name) { |
| super(name); |
| } |
| @Override |
| public void swimming() { |
| System.out.println(this.getName() + "努力学习游泳~"); |
| } |
| @Override |
| public void flying() { |
| System.out.println(this.getName() + "努力学习飞翔~"); |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)