今天我们来讲讲什么是接口?
提到接口,我们大致想的都是这样的接口:
不过今天要说的接口跟以上图片有些不一样。
接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中的所有方法都没有方法体。
接口使用interface关键字进行定义,语法:
public interface P{
void draw();
}
public:接口可以像类一样被权限修饰符修饰,但public关键字仅限用于接口在于其同名的文件中被定义。
接口继承接口:
interface intf1{}
interface intf2 extends intf1{}
类实现接口:
class 类名 implements 接口1,接口2,接口3.....,接口n
举个例子,步兵可以射击,医务兵既可以射击又可以治疗他人。
作为子类,可以同时继承父类与接口,继承一个父类的同时再实现一个接口,可以写成以下形式:
public class P extends Q(类名) implement Pa(接口名)
不过要注意的是,在接口中,方法必须被定义未public或abstract形式,其他修饰符不能被编译器认可,即使不将方法声明为public,它也是public形式。在接口中定义的任何字段都自动是static和final。
那么问题来了,抽象类和接口有什么区别呢?
抽象类是对根源的抽象,接口是对动作的抽象
抽象类与接口有五个不同点:
1、子类只能继承一个抽象类,但可以实现任意多个接口
2、抽象类中的成员变量可以是各种类型,接口中的成员变量只能是静态常量
3、抽象类中可以有静态方法和静态代码块等,接口中不可以
4、接口没有构造方法,抽象类可以有构造方法
5、接口里只能包含抽象方法(静态方法和默认方法),抽象类里则完全可以包含普通方法。