第10章 接口(Interface)

本文介绍了Java中的接口,包括接口的概述、语法、特点、JDK1.8后的新增特性,以及接口的使用和多态。接口是为类提供选择性行为的数据类型,不能被实例化,只能通过实现类来实例化。接口中的方法默认为public抽象方法,且可以包含静态常量。在JDK1.8后,接口还可以包含default和static方法。接口与抽象类不同,抽象类存放类固有的方法,而接口则提供外部附加给类的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

接口的概述
是一个由外部 给类选择性的添加行为的新的数据类型

编写、实现、继承接口的语法
在定义常量时:
可以写成 public static final
也可以写成 static final
亦可以写成 final
甚至可以直接去掉 final
类不能继承接口,只能实现接口

接口特点
JDK1.8之前:

接口无法实例化,只能由接口的实现类来实例化
1.接口跟类一样,同样不能被实例化
2.接口文件最后同样也会被编译器编译成 服务接口(接口名). class的字节码文件
3.接口中的所有方法,都只能定义成抽象方法,不能拥有方法体
4.接口中不能拥有构造器,以及初始化块(静态初始化块)
5.接口中的所有方法,访问修饰符默认就是public,即便不写也是public,接口方法中,可以不写public,以及abstract修饰符,不写,编译器会自动给我们添加上public abstract。
6.接口中不能定义“成员变量”,只能定义公开的,并且是静态常量
7.接口中可以定义无限个常量,可以定义无限的抽象方法(理论上)
8.接口在使用上来讲,不能被实例化,所有的抽象方法都必须由接口的实现类来实现

JDK1.8之后,出现的新的特性(了解)
1.接口中可以,添加非抽象方法,但是需要使用 default 关键字来声明非抽象方法,但此时 default 已经不再是访问修饰符,而真正的访问修饰符还是public
2.接口中可以使用 static 声明静态方法,但是必须由方法体的实现 ”{ }“

接口的使用
1.使用interface来声明一个接口
2.接口可以使用extends来继承接口
3.类可以使用implements来实现接口中的抽象方法,类一旦使用了接口,那么就必须要遵从“契约”去实现接口中的所有抽象方法
4.类只能单继承(继承一个父类),但是可以多实现(实现多个接口),接口之间采用“逗号”间隔
5.接口在设计时,需要遵从“接口最小化”原则

接口与多态
1.接口中只能允许抽象存在
2.接口同样是一种多态的体现,它依旧满足“相同的行为,不同的实现”
3.接口与实现类之间的关系,依旧是(父子关系)“is-a“的关系,同样可以使用”转型技术“
4.接口引用类型转换的时候,如果不是该接口的实现类,同样不能类型转换成功,它们不满足父子关系。

抽象类和接口之间的区别
语法层面:

语法定义
类的成员加上抽象方法
接口 interface 抽象方法
抽象类 abstract

语法使用
都不能实例化(new)
多继承多实现

设计层面
抽象类中存放类与生俱来的方法
接口中由外部附加给类的方法或行为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值