接口定义
当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口(interface)。
定义接口使用的关键字不是class,是interface.
对于接口当中常见的成员,而且这些成员都有固定的修饰符。
1. 全局常量:public static final
2. 抽象方法:public abstract
固定修饰符可省略,系统会默认自动帮忙补齐。即可写成 int age; void show1();void show2();
实现
类与类之间是继承关系(extends),类与接口之间是实现关系(implements)。
接口不可以实例化,只能由实现了接口的子类,并覆盖了接口中所有的抽象方法后,该子类才可以实例化。否则这个子类就是一个抽象类。
多实现
在java中,不直接支持多继承,因为会出现调用的不确定性。所以java将多继承机制进行了改良,在java中变成了多实现。即一个类可以实现多个接口。
细节:
一个类在继承另一个类的同时,还可以实现多个接口。
接口的出现避免了单继承的局限性。
接口与接口之间是继承关系,而且接口可以多继承。
原理:多继承取决于方法体,接口没有方法体,所以可以支持多继承。但类不可以,方法体导致运行调用的不确定性。
接口特点
1. 接口是对外暴露的规则
2. 接口是程序的功能扩展
3. 接口的出现降低耦合性(解耦性)
4. 接口可以用来多实现
接口与抽象类的异同点
相同点:
都是不断向上抽取而来的
不同点:
1. 抽象类需要被继承,而且只能单继承;
接口需要被实现,而且可以多实现。
2. 抽象类中可以定义抽象方法和非抽象方法,子类继承后可以直接使用非抽象方法;
接口中只能定义抽象方法,必须由子类去实现。
3, 抽象类的继承是is a 关系。在定义该体系的基本共性内容;
接口的实现是like a 关系,在定义体系的额外功能。
在不同的问题领域中,有不同的分析方式。
敲黑板的练习: