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


三.接口和类之间的关系

类和类的关系

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

类和接口的关系

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

接口和接口的关系

  • 继承关系,可以单继承,也可以多继承
相关推荐
学Linux的语莫4 小时前
python中类的常见写法
开发语言·python·状态模式
需要8264 小时前
容器化 Java:镜像瘦身与 JVM 容器感知(cgroup)
java·开发语言·jvm
Thomas.Sir4 小时前
第2课:SpringBoot4.x 项目构建:Maven/Gradle配置详解,父工程与依赖管理
java·spring boot
dyxal4 小时前
A2A 协议 v1.0 完全指南:方法名、Agent Card、三种绑定与 FastAPI 实战
开发语言·qt·fastapi
譕痕4 小时前
Rabbit 实例
java·开发语言·java-rabbitmq
weixin_448771724 小时前
使用Aspose给PDF添加水印
java·pdf
\光辉岁月/4 小时前
7.system类
java·system类
综合简报4 小时前
黑五海外发稿投给谁?三类海外媒体发稿渠道的分工
开发语言·php·媒体
SL_staff4 小时前
BI落地失败的3个技术断点:从数据接入、自助分析到服务闭环的工程实践
java·数据分析·数据可视化
大风起兮云飞扬丶4 小时前
Java——线程池
java·开发语言