接口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
效果
继承后, 可以使用父类作为访问切面
继承同时, 还能代码重用
接口只用于定义一套新的访问权限
意图
继承主要用于子类扩展功能, 父类分享共性
接口主要用于定义新的访问切面
声明
继承父类, 父类可以有属性 和方法实现
实现接口, 接口只能有方法声明
方法覆盖
继承父类后, 可以选择覆盖父类方法 或者不覆盖
实现接口后, 必须确保实现接口内的方法
数量
一个类只能继承一个类, 多继承会带来调用问题
一个类可以实现多个接口
意义
继承的关系是 是
接口的关系是 能
总结
根本就是两个东西