接口可以说是一个特殊的抽象类,接口里的方法都是抽象方法,
接口的特点:
1、一个类可以实现多个接口,也可以在继承一个类后继续实现多个接口(多实现间接支持了类的多继承)
2、接口可以继承另一个接口,并且可以继承多个
之所以能继承多个的原因是接口中都是抽象方法,没有方法体,也就是没有方法的具体实现需要实现该接口的类自己来实现,这就不存在多继承时遇到相同 方法时不知道调用哪一个的问题;而类之所以不能继承多个 类的主要原因也就是调用的不确定性,如果两个父类有相同的方法子类调用该方法时不知道调用哪一个;
3、接口是某一功能对外暴露的规则,是对事物的一个功能的拓展,能降低耦合性,并且可以多实现;
举例:电脑的usb接口就是电脑连接鼠标、键盘等功能对外暴露的一个规则,是对电脑本身功能的一个扩展,能降低鼠标与电脑的耦合性,并且键盘.优盘都可以对该接口进行功能的实现,体现了多实现
接口与抽象类的区别:
相同点:都是对某些事物的一个抽象描述,都不能被实例化
不同点:1、抽象类中可以有抽象方法也可以有非抽象方法,非抽象方法可以被子类拿来直接使用
接口中只能有抽象方法不可以有非抽象方法,并且接口中的成员都有固定修饰符:
成员常量一般用public static final 来修饰
方法一般用public abstract来修饰,但修饰符都可以省略不写
2、抽象类是通过继承来体现其作用,子类与其的关系是 is a ,定义继承其所有子类的共性内容
接口是通过实现来体现其作用,实现的类与其的关系是like a,定义实现其所有类的额外功能,需要这个功能则实现该接口不需要则不实现