接口:
- 接口的语法:
I. 相当于特殊的抽象类,定义方式、组成部分,与抽象类类似。
II. 接口中只能定义公开静态常量(变量)
III. 接口中只能定义公开抽象方法(方法)
IV. 接口不是类
interface MyInterface{ //使用interface关键字定义接口
public static final String FIELD = “value”;
public abstract void method();
// 只能定义:公开静态常量、公开抽象方法
}//没有构造方法,不能创建对象
class 类名 extends 父类名 implements 接口名1 ,接口名2{}
implements //实现
接口使用
接口中的成员 变量默认都是public static final的,必须显示初始化
接口中的方法 默认都是public abstract的
接口没有构造方法,不能被实例化
一个接口不能实现另一个接口,但可以继承多个其他接口
一个类必须实现接口抽象方法,除非这个类也是抽象类
- 接口与抽象类的异同:
I. 相同:
1).可以编译成字节码文件
2).不能创建对象。(接口不是类,不是模板的概念,也没有构造方法)
3).可以声明引用。
4).具备Object定义的方法。
II. 不同:
1.接口中的属性只能是公开静态常量(隐式使用public static final修饰)public 以及 static 以及 final 可以隐藏
2). 接口中的方法只能是公开抽象方法(隐式使用public abstract修饰)
3). 没有构造方法、没有动态代码块、没有静态代码块
抽象方法(规定子类必须存在的行为、规范了该行为的具体要求)
3. 接口的概念:
I. 接口是种能力和约定
1). 接口的定义:代表了某种能力
2). 方法的定义:能力的具体要求,约定
II. 经验:Java为单继承,当父类的方法种类无法满足子类需求时,可实现接口扩充子类能力。
III. 经验:接口支持多实现,可为类扩充多种能力。
-
接口的规范:
I. 任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类。
II. 实现接口中的抽象方法时,访问修饰符必须是public。 -
接口引用:
I. 同父类一样,接口也可声明为引用,并指向实现类对象。
II. 注意:
1). 仅可调用接口中所声明的方法,而不可调用实现类中独有的方法。
2). 可强转回实现类的本身类型,进行独有的属性和方法的调用。(强转前通过instanceof判断) -
接口的多态: 接口表示某种能力
(使用接口作为方法形参,更自然的实现多态,扩大可选的范围)
I.多种不同类型的引用指向同一个对象时,表示看待对象的视角不同II.不同引用所能看到的对象范围不同,只能调用自身类型中所声明的部分
Ⅲ.不同引用类型,仅可调用自身类型中所声明的方法
class Student implements会换灯泡的{
public void 求人换灯泡(会换灯泡 person){
灯泡 废灯泡 = person.换灯泡();} }
interface 会换灯泡的{ public 废灯泡 换灯泡(); } -
常见关系:
I.类与类:单继承,extends父类名称
II.类与接口:多实现,implements 接口名称1,接口名称2,接口名称3
III. 接口与接口:多继承,extends 父接口名称1,父接口名称2。。。 -
常量接口:
public static final int A = 10;
将多个常用于表示状态和固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码的可读性。
接口定义常量更纯粹
直接可以 通过函数 调用 接口名.常量名 输出 -
接口:
宏观概念:
I. 接口是一种标准。 接口的实现者—接口/标准—接口的使用者
谁创建了实现类对象调了接口的方法谁就是使用者
implements 实现者
II. 耦合度:模块与模块之间的关联程度,关联的越密切,耦合越高,关联的越松散,耦合越低。
回调原理
接口回调:先有接口的使用者,后有接口的实现者
4工具的调用者(程序员) ——> 工具2(接口的使用者) ——> 接口1(标准) ——> 3接口的实现者(程序员)
接口的好处
程序的耦合度降低
更自然的使用多态
设计与实现完全分离
更容易搭建程序框架
更容易更换具体实现
总结
什么是接口
微观:接口是一种能力和约定
宏观:接口是一种标准
接口与类的异同
没有构造方法,仅可定义公开静态常量与公开抽象方法
接口的应用
Java为单位继承,当父类的方法种类无法满足子类需求时,可实现接口扩充子类能力
接口的规范
任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类
实现接口中的抽象方法时,访问修饰符必须是public
什么是常量接口
将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理
什么是接口回调
先有接口的使用者,后有接口的实现者。
Java中的接口
属性全都是静态常量
方法都是全局抽象方法
无构造方法
一个类可以实现多个接口,非抽象类实现接口时必须实现接口中的全部方法
抽象类利于代码复用,接口利用代码维护。