【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 返回值类型 方法名(参数列表){ }


三.接口和类之间的关系

类和类的关系

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

类和接口的关系

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

接口和接口的关系

  • 继承关系,可以单继承,也可以多继承
相关推荐
nanxun8861 天前
记一次诡异的 Docker 容器"串包"故障排查
java
用户1563068103511 天前
Day01 | Java 基础(Java SE)
java
行者全栈架构师1 天前
Maven dependency:tree 的 8 个高级用法
java·后端
行者全栈架构师1 天前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_01 天前
mac(m5)平台编译openjdk
java
唐青枫2 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马2 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261352 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261352 天前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454753 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程