接口Interface

接口自定义权限

案例

定义权限

定义一个新的接口, 里面具有希望暴露的方法名称

从而声明一套新的访问权限集合

一个类可以通过声明 implements 接口, 从而声明它支持这套访问权限

使用自定义权限

一个类声明支持这套权限后

就可以将变量类型 改为接口类型(也就是这套新的权限)

从而访问时, 只能访问接口中声明的方法

接口多态

调用同样的方法名, 却执行了不同的代码

接口多态思维

调用方不需要知道到底是哪个类执行的这个方法

调用方也不在乎这个类有哪些其它的方法

instanceof

1 2 3
if (person instanceof Calculator){ ...}

instanceof 用来探测 某个对象所属的类 是否能通过某个访问权限访问

也就是 用来探测 该对象变量是否能够转型为 探测的类型

通过的类型

自己

所有父类

继承链上所有声明实现的接口

接口语法

接口声明

方法声明
1 2 3
public interface Calculator { void calculate();}

接口内只能有方法声明

必须 public 所以不需要写 public

仅仅声明, 所以不能写方法实现

属性声明

接口仅用于 定义一个新的 访问切面

所以不能声明属性

类实现

1
public class 类名 implements 接口名public class Person implements Calculator

implements 声明当前类可以提供 接口类型 中 所描述的方法

名词

类 实现 接口

接口 / 实现类

规则

声明后, 需要确保该类确实实现了这些方法

实现多个接口

一个类可以声明实现多个接口

1
public class Person implements Calculator, Thinking

只要这个类实现了 接口里的所有的方法

就可以声明实现接口, 代表支持某个访问切面

继承 和 接口 的对比

语法

extends / class

implements / interface

效果

继承后, 可以使用父类作为访问切面

继承同时, 还能代码重用

接口只用于定义一套新的访问权限

意图

继承主要用于子类扩展功能, 父类分享共性

接口主要用于定义新的访问切面

声明

继承父类, 父类可以有属性 和方法实现

实现接口, 接口只能有方法声明

方法覆盖

继承父类后, 可以选择覆盖父类方法 或者不覆盖

实现接口后, 必须确保实现接口内的方法

数量

一个类只能继承一个类, 多继承会带来调用问题

一个类可以实现多个接口

意义

继承的关系是 是

接口的关系是 能

总结

根本就是两个东西

ZZAX 微信公众

文档一更新,立刻告诉你