接口与类;接口与类在以下方面相似
接口可以有任意数量的方法;
接口保存为以”.java”为后缀名的文件,接口名需要与文件名匹配;
接口编译后是后缀名为”.class”的字节码文件;
在包中的接口,其相应的字节码文件必须放置在和包名称相匹配的一个目录结构中;
接口与类之间也有几个不同之处;
接口不能被实例化;
接口不包含任何构造器;
接口中的所有方法都是抽象的;
接口中不能包含实例成员变量。唯一可以出现在接口中的成员变量必须是同时声明为 static和final;
接口不能被一个类继承,只能被一个类来实现;
一个接口能够继承多个接口。
接口不是类。虽然编写接口类似于编写一个类,但它们是两个不同的概念。类描述了对象的属性和行为,接口包含的是一个类需要实现的行为。
接口声明;在Java语言中,关键字interface用于声明接口。
接口具有下列性质; 接口默认是抽象的。在声明接口时,不需要使用关键字abstract;
接口中的每一个方法默认也是抽象的,所以也不需要关键字abstract;
接口中的方法默认访问级别是public。 在编写接口的时候通常用public关键字,但是如果我们不显式地将接口中的方法声明为public,它仍然将是public的。
接口实现;类实现接口时有两个选择, 实现接口中定义的所有方法, 声明自己为抽象类。
接口的应用;接口可以用于暴露类的行为,允许类的用户通过接口的实现类来使用接口中的方法;
接口可以用于强制一个类具有某些行为。
在接口中声明成员变量;接口可以包含成员变量,但是成员变量只能用static和final关键字共同来修饰。由于接口不能被实例化,所以成员变量必须被声明为static,而声明为final是为了程序的可靠性。
继承多个接口;我们知道,Java语言不允许多继承,一个类只能继承一个父类。然而,接口不是类,它可以继承多个父接口。在接口多继承中,关键字extends只使用一次,多个父接口之间用逗号分隔。
接口与抽象类的区别;
接口中只能包含抽象方法;而抽象类中可以包含普通方法。
接口中不能定义静态方法;而抽象类可以定义静态方法。
接口中只能定义静态常量属性,不能定义普通属性;而抽象类既可以定义普通属性,也可以定义静态常量属性。
接口不包含构造器;而抽象类中可以包含构造器。抽象类中的构造器并不是用于创建对象,而是让子类调用这些构造器来完成属于抽象类的初始化工作。
接口中不包含初始化块;而抽象类可以包含初始化块
一个类最多有一个直接父类,包括抽象类;但是一个类可以直接实现多个接口,通过实现多个接口来弥补Java单继承的不足。
JDK1.8以后,在接口中可以使用default关键字,声明非抽象方法,但是真正的访问修饰符依旧还是public,可以说它现在就是一个声明关键字而不是访问修饰符;接口中可以使用static声明方法,但必须要有方法体的实现{ }。