一.概念
接口(interface):可以看作一种特殊的抽象类,里面的方法都是抽象的,且不能有方法体,而且只能定义static final成员变量。
二.特点:
相同点:
(1)两者都是抽象的,不能实例化。
(2)interface实现类及abstract class 的子类,都必须要实现声明的抽象方法
不同点:
(1)一个类可以实现(implements)多个interface,但一个类只能继承(exends)一个abstract class
(2)interface强调特定功能的实现,具有哪些功能,而abstract class强调所属关系。
(3)尽管interface实现类及abstract class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现(只实现其中的抽象方法,覆盖其中已实现了的方法,二者均实现)。
(4)interface是完全抽象的,只能声明方法,而且只能声明public的方法,不能声明private及protected的方法,不能定义方法体,也不能声明实例变量。
三、为什么Java中采用多接口而没有多继承?
接口只定义了你做什么,而不关心你怎么做;
如果是多继承,有可能两个类定义的两个方法是做同一件事情的,那么他们的子类就无法选择到底去用哪一个。