接口:
1.接口是引用数据类型
2.接口是完全抽象的。(抽象类是半抽象),或者说接口是特殊的抽象类
3.接口定义语法:[修饰符列表] interface 接口名{ }
4.接口支持多继承,一个接口可以继承多个接口
5.接口中只有常量和抽象方法
6.接口中的方法都是抽象方法,所以接口中的方法不能有方法体
7.接口中所有元素都是public修饰的
8.接口中的抽象方法定义时,public abstract可以省略
9.接口中的常量定义时,public static final可以省略
类实现接口
1.语法:class 类名 implements 接口名{ 类体 }
2.非抽象类实现接口的话,必须将接口中所有的抽象方法全部实现(覆盖、重写)
3.重写方法时必须定义为public,因为重写方法的时候方法的权限不能比重写前更低
4.接口和类也可以实现多态,调用其他接口中的方法需要接口转型
5.一个类可以同时实现多个接口,要重写所有接口中的所有方法
继承和实现都存在
- 继承写在前,实现写在后
接口在开发中的作用
1.接口在开发中的作用,类似于多态在开发中的作用
- 多态:面向对象编程,不要面向具体编程,降低程序耦合度,提高程序的扩展力
- 接口:面向接口编程,可以降低程序的耦合度,提高程序的扩展性,符合OCP开发原则
2.接口可以解耦和,解的是调用者和实现者的耦合。调用者面向接口调用,实现者面向接口编写实现
抽象类和接口的区别(语法上)
抽象 | 构造方法 | 继承 | 实现 | 内容 | 使用频率 | |
---|---|---|---|---|---|---|
抽象类 | 半抽象 | 有 | 类和类之间只能单继承 | 一个抽象类只能继承一个类 | 有构造方法 | 少 |
接口 | 完全抽象 | 没有 | 接口之间可以多继承 | 一个类可以同时实现多个接口 | 只有常量和抽象方法 | 多 |
类型和类型之间的关系
1.is a
- Cat is an Animal
- 满足is a的表示“继承关系”
2.has a
- I have a Pen
- 满足has a关系的表示关联关系
- 关联关系通常以“属性”的形式存在
3.like a
- Cooker like a FoodMenu
- 满足like a的表示“实现关系”
- 实现关系通常是:类实现接口