接口可以理解为一种特殊的类,
class: 定义类
interface :定义接口
接口:不属于继承体系,是表现出某一个对象扩展出的功能
成员:
- 常量 :public static final
- 抽象方法: public abstract
由于接口中的成员是固定的,并且修饰符也是固定的,如果漏写了某个修饰符,没有关系,编译器自动补全。
特点:
1.接口不能实例化
2.接口应该有子类,子类实现(implements)接口,子类如果想要能创建对象,必须实现所有的抽象方法,否则子类还是一个抽象类。
3.接口支持多态,父类型接口引用指向实现类对象
类-----类:单继承
类-----接口:多实现
接口-------接口:多继承
class A extends B implements C{}
类A继承了B同时实现了C,B和C没有关系
class A extends B{}
class B implements C{}
类A继承了B,B实现了C,A-->B--->C
接口使用总结:
- 接口可以描述事物不属于继承体系中的扩展的功能;
- 接口可以定义规则
接口好处:
- 支持多态,提高了代码的扩展性
- 弥补了java中的单继承特点,接口与接口间多继承,类与接口可以多实现
接口和抽象类的区别:
1从声明上:
(1)抽象类是一个类,使用class声明,还需要使用abstract修饰
(2)接口不是一个类,使用interface声明
2.从能够书写的成员上看:
(1)抽象类是一个类,可以书写类中可以书写的成员,和抽象函数。
(2)接口只能书写成员变量和抽象函数,而且修饰符是固定的。
3.从有无构造函数上看;
(1)抽象类必须有构造函数
(2)接口没有构造函数
4.从作用上看:
(1)抽象类是父类,用来描述所有子类的共性信息的,只是描述的有些功能是不具体的。
(2)接口是用来描述不属于继承体系的扩展功能的,还可以定义规则。
5.继承关系上:
(1)抽象类和类之间是继承关系,只支持单继承和多重继承。
(2)接口和类之间是实现关系,一个实现类可以实现多个接口
(3)接口和接口之间是继承关系,可以多继承和多重继承
java1.8的新特性:
在接口中可以写有方法体的方法,但是必须加关键字 default。
加上此关键字后即可在接口里面写有方法体的方法了。