接口
接口的语法:
[修饰符] interface 接口名 extends 父接口1, 父接口2... {
0-N 个常量;
0-N个抽象方法;
}
一个完整类定义的语法:
[修饰符:public、final] class 类名 extends 父类 implements 接口1,接口2...{
....
}
接口的定义
- 接口是最彻底的抽象类
- 接口里都是抽象的方法,没有实现的方法
- 接口语法和类的区别class换为interface来定义
接口的特点
- 接口不能被实例化,但是可以声明引用类型的变量
- 使用接口来声明变量时该变量的运行时类型必须是该接口的实现类
- 接口的所有成员定义只能用public和defualt
- 接口中成员变量只能是静态,方法只能是抽象,所以可以省略static和abstract的书写
- 接口可以多继承extends,用逗号隔开
- 类可以implenments 多个接口,用逗号隔开
接口的作用
- 用于定义实现类的行为规范;
- 定义变量
- 定义一些常量
- 被其他类实现
接口和抽象类
相同点:
- 都不能被实例化,位于继承树的顶端,是用于被其他类继承或者实现的;
- 都可以包含抽象方法,子类都必须要实现抽象方法;
在实际的开发中,都是接口先行,一般都是先定义接口,然后开发人员实现接口,完成具体方法的实现。
抽象类是个半成品,可以作为一个模板去使用。
不同点:
- 抽象类中可以定义普通方法,但是接口中都是抽象方法和静态变量;
- 在抽象类是可以定义静态方法的,接口中不能定义静态方法的;
- 在抽象中可以定义构造器的,但是在接口中是不存在构造器这个概念的;
- 一个类最多只能有一个直接的父类或者抽象类,但是可以有多个接口的实现。