10、接口

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_45536396/article/details/102736113

接口

一、接口的概念

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

二、接口的语法

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,程序员)在使用工具的使用发现需要一个接口的实现者,这时候提供了一个接口的实现者。接口的使用者使用接口的方法根据覆盖的原则,执行的是实现类覆盖之后的方法。)

猜你喜欢

转载自blog.csdn.net/weixin_45536396/article/details/102736113