【Java-Day12】接口

目录

一.接口

二.接口中的成员变量的特点

JDK8以后接口中新增的方法:

[1.允许在接口中定义默认方法,需要使用关键字 default 修饰](#1.允许在接口中定义默认方法,需要使用关键字 default 修饰)

[2.允许在接口中定义静态方法,需要用 static 修饰](#2.允许在接口中定义静态方法,需要用 static 修饰)

[3.允许在接口中定义私有方法,用 private 修饰](#3.允许在接口中定义私有方法,用 private 修饰)

三.接口和类之间的关系


一.接口

接口: 接口就是一个规则,而且是独立于继承体系以外的规则。(可以理解为干爹)

格式:关键字 interface 来定义

public interface 接口名{...}

使用: 接口和类之间的是实现关系,通过implements 关键字表示

public class 类名 implements 接口{...} //定义接口

public class 类名 extends 父类{...} //定义继承类

注意:

  1. 接口不能实例化
  2. 接口的子类(实现类),要么重写接口中所有的抽象方法,要么实现类是一个抽象类
  3. 一个类可以实现多个接口,也可以在继承一个类的同时,实现多个接口

public class 类名implements 接口1,接口2{...}

public class 类名 extends 父类 implements接口1,接口2{...}

二.接口中的成员变量的特点

**成员变量:**只能是常量。默认修饰符:public static final

接口中没有构造方法。

成员方法:JDK7之前接口里的方法默认是抽象方法,是为了定义行为规范,强制类遵循,必须重写。

JDK8以后接口中新增的方法:

1.允许在接口中定义默认方法,需要使用关键字 default 修饰

**作用:**为了接口升级时,代码不报错。(在之前接口里定义的方法必须被实现类重写)

接口中默认方法的定义格式:

格式: public default 返回值类型 方法名(参数列表){ }

**范例:**public default void show(){ }

接口中默认方法的注意事项:

  1. 默认方法不是抽象方法 ,所以不强制被重写。但是如果被重写,重写的时候去掉default关键字
  2. public可以省略,default不能省略
  3. 如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写

2.允许在接口中定义静态方法,需要用 static 修饰

接口中静态方法的定义格式:

格式 :public static 返回值类型 方法名(参数列表){ }

范例: public static void show(){ }

接口中静态方法的注意事项:

  1. 静态方法只能通过接口名调用,不能通过实现类名或者对象名调用
  2. 静态方法不能重写
  3. public可以省略,static不能省略

3.允许在接口中定义私有方法,用 private 修饰

接口中的私有方法(为本接口内的默认/静态方法服务,不给外界使用):

(1).普通的私有方法

作用: 为了抽取**默认方法(default)**中重复代码而出现的

格式: private 返回值类型 方法名(参数列表){ }

(2).静态的私有方法

作用: 为了抽取静态方法中重复代码而出现的

格式: private static 返回值类型 方法名(参数列表){ }


三.接口和类之间的关系

类和类的关系

  • 继承关系,只能单继承,不能多继承,但是可以多层继承

类和接口的关系

  • 实现关系,类实现接口,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

接口和接口的关系

  • 继承关系,可以单继承,也可以多继承
相关推荐
王中阳Go18 分钟前
老板用AI三天写到90%,让我明天上线:Java 团队怎么接这10%的烂摊子?
java
ZJU_统一阿萨姆22 分钟前
【算子开发】环境搭建与第一个CUDA程序
开发语言·人工智能·系统架构
Evand J31 分钟前
【MATLAB例程,车联网8】MPC网联车辆节能跟驰控制:速度跟踪、间距约束与能耗优化。附MATLAB完整代码的下载链接
开发语言·matlab·车联网·调度·mpc·节能·车辆控制
ttwuai1 小时前
Go 后台接入 SSO 后菜单正常但接口 403,怎么排查权限链路?
开发语言·后端·golang
gugucoding1 小时前
55. 【Java】Maven:项目构建的“管家”
java·maven
Canmag 兴隆磁性1 小时前
C 系列充磁机
c语言·开发语言·学习·永磁材料·充磁·退磁
benchmark_cc1 小时前
批量获取量化数据时,如何设置合理的超时和重试机制?——QuantDash 高性能实战指南
开发语言·人工智能·python·pandas·量化·quantdash
2601_966949651 小时前
使用 Pandas 读取批量数据时如何避免内存溢出?QuantDash 量化数据工程师避坑指南
开发语言·python·pandas·tushare·akshare·quantdash
郑州光合科技余经理2 小时前
海外版多语言团购系统架构:主数据互通与核销边界
java·开发语言·前端·后端·系统架构·php·ai编程