一、接口的概念
——与抽象类一样都是定义多个类的共同属性
——使抽象的概念更深入了一层,是一个“纯”抽象类,它只提供一种形式,并不提供实现
——允许创建者规定方法的基本形式:方法名、参数列表以及返回类型,但不规定方法主体,即接口内定义的方法只能是抽象方法。
——也可以包含基本数据类型的数据成员,但它们都默认为static和final
二、接口的格式
【public】interface 接口名称 【extends 父接口名列表】{
【public】【static】【final】 数据类型 成员变量名 = 常量;
。
。
。
【public】【abstract】 返回类型 方法名(参数列表);
。
。
。
}
说明:——interface的修饰符只要public和缺省两种,public为公共的,缺省只能被与接口处在同一包中的成员访问。
——数据成员的修饰符只能为public、static、和final共同修饰,可以省略不写,但系统默认就是被这三个修饰符修饰,也就是说接口的数据成员是静态常量。
——方法成员只能被public和abstract修饰,省略系统也默认如此,也就是说接口的方法只能是抽象方法。
三、接口的作用
——面向对象的一个重要机制
——实现多继承,同时免除c++的多继承的复杂性
——建立类与类直接的“协议”
①把类根据其实现的功能分别代表,而不必顾忌它所在的类继承层次,这样可以最大限度地利用动态绑定,隐藏实现细节
②实现不同类之间的常量共享
四、接口的实现
——接口不能用new运算符直接产生对象,必须利用其特性设计新的类,再用新类来创建对象。
利用接口设计类的过程,称为接口的实现。使用implements关键字;
语法如下
public class 类名称 implements 接口名称 {
/* Bodies for the interface methods */
/* Own data and methods. */
}
说明:
——必须实现接口中的所有方法
——来自接口的方法必须声明成public,想想问什么?
五、代码演示
class Rnum {
public static void main (String[]args){
//主方法
Display[] data = new Display[3];//使用接口声明一个变量数组
data[0] = new Notice(new StringBuffer("hello" ));
data[1] = new Car(15);
data[2] = new Ad