接口是一种特殊的类,它的成员包括常量和抽象方法,其中常量必须初始化。
接口可以帮助实现类似于多重继承的功能
接口的主要作用:
- 通过接口可以实现不相关类的相似行为,而不用去考虑这些类的层次关系。
- 通过接口可以指明多个类需要实现的方法。
- 通过接口可以了解对象的交互界面,而不用了解对象所对应的类。
接口的定义
interface
[public] interface 接口名 [extends 父类接口名列表]{
[public][static][final] 类型 名字 = 常量;
[public][abstract]返回值类型 方法名 (参数列表)[throw异常列表];
}
其中:抽象方法声明的关键字abstract是可以省略的。数据成员的关键字final也可省略。
接口中只能包含public,static,final类型的成员变量和public,abstract类型的成员方法
接口中没有构造方法。
与类相同,接口也具有继承性,一个接口可以有一个以上的父类接口,他们之间用逗号分隔,形成父类接口列表,新接口继承所有父类接口的属性和方法。
接口的实现
implements
某个类为接口中的抽象方法书写语句并定义实在的方法体,称为实现这个接口。
接口抽象方法的访问权限都已经指定为public,所以在类实现方法时,必须显式的使用public修饰符,否则系统将警告缩小了接口中定义的方法的访问控制范围。
一个类只能有一个父类,但可以同时实现多个接口。
当类实现了某个接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象的
不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例
对接口的引用
任何实现该接口的类的实例都可以存储在该接口类型的变量中,可以通过这些变量访问类所实现的接口中的方法。java运行时系统动态确定该用哪个类中的方法。
public class B implements A{}
A a = new B(); //引用变量a被定义为A接口类型,引用了B实例
A a = new A(); //错误,接口不允许实例化
接口的扩展
接口与一般类一样,均可通过扩展的技术来派生出新的接口。原来的接口称为基本接口或父接口,派生出的接口称为派生接口或子接口。通过这种机制,派生接口不仅可以保留父接口的成员,同时也可加入新的成员以满足实际的需要。
同样的,接口的扩展(或继承)也是通过关键字extends来实现的。有趣的是,一个接口可以继承多个接口,这点与类的继承有所不同。
接口扩展的语法:
interface 子接口名称 extends 父接口1,父接口2...
{
...
}
看:https://blog.csdn.net/hotelboy6666/article/details/50005121
https://blog.csdn.net/weixin_43101144/article/details/84937219