接口
- 接口也是一种引用数据类型,编译之后也是一个class字节码文件。
- 接口是完全抽象的。(抽象类是半抽象)或者也可以说接口是特殊的抽象类。
- 接口的语法:修饰符列表 interface 接口名{}
- 接口支持多继承,一个接口可以继承多个接口。
- 接口中只包括两部分内容:常量和抽象方法。接口中没有其他内容。
- 接口中所有的元素都是public修饰的。
- 接口中抽象方法的public abstract 可以省略。
- 接口中的常量的public static final 可以省略。
- 接口中的方法都是抽象方法,所以接口中的方法不能有方法体。
- 当一个非抽象的类实现接口的话,必须将接口中所有的抽象方法全部实现(覆盖,重写)。
- 一个类可以实现多个接口。
- 使用接口,写代码的时候,可以使用多态(父类型引用指向子类型对象)
extends和implements可以共存,extends在前,implements在后。
public class 类名 extends 父类 implements 接口名{}
类和类之间叫做继承,类和接口之间叫做实现。可以把实现看作为继承。
继承用extends关键字完成。
实现用implements关键字完成。
接口在开发中的作用:就三个字 解耦合
接口在开发中的作用和多态在开发中的作用类似。
多态:面向抽象编程,不要面向具体编程。
public class Master{
public void feed(Animal a){
}
}
面向Animal父类编程,父类是比子类更抽象的。
所以我们叫做面向抽象编程。
接口是完全抽象的,是面向抽象编程,也是面向接口编程。
有了接口就有了可插拔,可插拔表示扩展力强,不是焊接死的。
接口离不开多态,接口只能new子类。(父类指向子类)
任何一个接口都有调用者和实现者。
接口可以将调用者和实现者解耦合。
调用者面向接口调用。
实现者面向接口编写实现。
以后进行大项目的开发,一般都是将项目分离成一个模块一个模块的,模块和模块之间采用接口衔接。降低耦合度。
is a (继承),has a (关联),like a (实现)
Cat is a Animal (猫是一个动物)
凡是能够满足is a 的表示继承关系。
public class Cat extends Animal{
}
she has a Pen (她有一支笔)
凡是能够满足has a 关系的表示关联关系。
public class She{
Pen pen;
}
Cooker like a FoodMenu (厨师像一个菜单一样)
凡是能够满足like a 关系的表示实现关系。
实现关系通常是:类实现接口
public class Cooker implements FoodMenu{
}
抽象类和接口的区别:
抽象类是半抽象的。
接口是完全抽象的。
抽象类中有构造方法。
接口中没有构造方法。
接口和接口之间支持多继承。
类和类之间只能单继承。
一个类可以同时实现多个接口。
一个抽象类只能继承一个类(单继承)。
接口中只允许出现常量和抽象方法。
以后接口使用的比抽象类多,一般抽象类使用的还是少。
接口一般都是对行为的抽象。
- 点赞
- 收藏
- 关注作者
评论(0)