10、接口

接口

一、接口的概念

接口是一种能力,接口是一种约定,接口是一种规范,接口是一种标准。

二、接口的语法

1. 接口相当于特殊的抽象类,定义方式,组成部分都和抽象类类似。

2. 定义语法: interface 接口名{}

3. 特点

a) 接口中所有的方法都是公开抽象方法 默认为public abstract 修饰
b) 接口中所有的属性都是公开静态常量 默认为public static final修饰
c) 接口中没有构造方法,动态|静态代码块

4.接口和抽象类的异同点

a) 相同点
1. 都能编译生成 .class 文件
2. 都不能new对象
抽象类:不够完整 不够具体 在现实生活中不存在,所以不能new对象
接口:不够具体 不够完整 没有构造方法
3. 都可以声明引用
b) 不同点
1. 接口中所有的属性都是公开静态常量,默认为public static final 修饰
抽象类没有具体要求
2. 接口中所有的方法都是公开抽象方法,默认为public abstract修饰
抽象类没有具体要求
3. 接口中不能定义构造方法,动态|静态代码块
抽象类可以定义
4. 接口是多继承 ,抽象类是单继承

​ 详见代码TestInterface.java

三、接口的应用

父类中只能提供共性的属性和方法,没有办法提供子类中独有的属性和方法,子类只能在类中自己提供,比较麻烦,可以通过定义接口来为子类扩充功能。

1.接口是一种能力,接口是一种约定

定义接口:制定具有某种能力的接口
约定方法:实现接口的具体方法

2. 接口的实现

a). 接口可以附加给类,那么一旦将一个接口附加给了一个类,那么就代表这个类具
备了这种能力
语法:class 类 extends 父类 implements 接口名{}
类:实现类
b). 一个类实现了一个接口,必须实现接口中所有的抽象方法,
否则这个类还是一个抽象类.
注意:接口中方法默认为public abstract 修饰 ,那么实现类实现接口覆盖接口中的
抽象方法,访问修饰符必须是public。
c). 接口支持多实现,一个类可以同时实现多个接口,多个接口之间用,隔开
语法: class 类名 extends 父类 implements 接口名1,接口名2…接口名n{}

3. 接口引用

接口可以声明为引用,指向的是实现类对象。
语法:接口类型 接口引用 = new 实现类对象();
特点:通过接口引用只能调用接口中定义的属性和方法,不能调用实现类定义的属性
和方法。

4. 接口的多态

不同引用都可以指向同一个对象,不同的引用关注点不同,所能看到对象的范围不
同,只能调用引用中声明的属性和方法。
接口作为方法形参,不再局限于对象的类别(父类),只是关注于是否具备某种能力,可
以更自然的实现多态。
接口可以作为返回值类型,可以作为数组类型。

​ 详见代码:TestAnimal.java以及TestInterface1.java

5. java中常见的关系

a. 类与类: 单继承
class 子类 extends 父类
b. 类与接口:多实现
class 实现类 implements 接口1,接口2…接口n{}
c. 接口与接口:多继承
interface 子接口 extends 父接口1,父接口2…父接口n{}

6. 接口的转型

​ 详见代码TestInterface2.java

四、接口的好处

解耦合:解除的是接口的使用者和接口的实现者之间的关联性。

多继承

五、接口回调

先有接口的使用者,后有接口的实现者。

(接口的使用者在没有实现类的的情况提前使用了接口中的抽象方法。在工具的使用者(main,程序员)在使用工具的使用发现需要一个接口的实现者,这时候提供了一个接口的实现者。接口的使用者使用接口的方法根据覆盖的原则,执行的是实现类覆盖之后的方法。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值