Java的接口
一、接口的概念
1.接口:是一种标准,接口的实现者和使用者都必须遵循的约定。抽类是一种特殊的类,而接口是
一种特殊的抽象类。虽然接口不叫类,但是接口在使用中的很多性质和类之间的继承关系相似。
2.Java 语言中的接口也有同样的含义。接口是一套标准,用来规范实现该接口的所有类的特征和
行为。接口比抽象类更纯粹,抽象类中成员变量的值可以被修改,也可以不被修改,而接口中只能
定义常量,并且必须对该常量赋初值,且不能被修改;抽象类中可以定义抽象方法,也可以定义普
通方法,但是接口中定义的方法必须全是抽象方法。
3.接口的基本语法:
[修饰符] interface 接口名 [extends 父接口列表]{
[常量声明;]
[抽象方法声明;]
}
①关键字:interface
② 所有的属性都是公开、静态、常量
③所有的方法都是公开、抽象方法
④没有构造方法,不能参与创建对象的过程,可以声明引用
⑤ 修饰符通常是访问权限修饰符,可以有两种:publie 和默认。如果接口是用 public修饰时,则源
文件的名字必须和接口名一致,而且一个源文件中最多只能定义一个 public接口。
③ extends 父接口列表可选项,父接口和父接口间用逗号分隔。
④ 接口中可以为空,但是有成员时,该成员必须是常量或抽象方法。
4、①创建接口
创建接口的步骤和创建类类似,首先选择项目名称,之后右击,在弹出的快捷菜单中选项
New选项,再选择 interface选项,然后填写接口名,选择访间权限修饰符及父接口,最后
单击“ 完成”按钮完成接口的创建。
② 接口中的常量
接口中定义的变量前默认有3个修饰符public、static 和final。因为有final 修饰符,所以该变量
在声明时必须赋初值,并且在程序运行中不容许改变变量的值,该变量也被称为常量。
③接口中的方法
接口中定义的方法默认有 public、abstract 两个修饰符。
接口中的常量和方法前,默认修饰符可以定义,也可以不定义。当修饰符未定义时,系
统会自动按要求添加。
二、类与接口的实现
类和接口之间是实现关系,用implements 关键字表示。实现关系是变相的继承关系,满足继承
关系的所有规则,因此接口可以作为特殊的父类出现。
实现关系的规则如下:
[修饰符] 子类[extends 父类][implements 接口列表]{
类体;
}
说明:类之间是单继承关系,extends 父类部分是可选项,如果没有该选项时,默认继承自 Object
类。
子类从父类中如果无法获得某种功能,可以通过实现接口的实现让类中具有该种功能,实现关
系为类功能的拓展提供了一种灵活的方式。接口中的方法都是抽象方法,当类实现接口时,需要对
接口中的抽象方法进行方法实现(方法重写),否则这个类就必须定义成抽象类,抽象类不能实例
化。
三、访问接口常量
接口中定义的变量,因为系统会默认添加 public、static和 final 3 个修饰符,也被认为是常量。
接口中的常量访问方式有3种,分别是:
① 接口名.常量。
② 类名.常量(类和接口之间必须有实现关系)。
③ 对象名.常量
四、接口与接口的关系
1.接口和接口之间是多继承关系,即一个子接口可以有多个父接口,当子接口继承父接口时,会自
动继承父接口中所有的常量和抽象方法。接口之间的关系规则定义如下:
[修饰符]interface 子接口 [extends 父接口列表]{ }
五、小结
1.继承(extends)
①单继承:类与类之间
②多继承:接口与接口之间
2.实现(implements)
①多实现:类与接口之间
②先继承后实现:类名 extends 类名 implements 接口1,接口2{}
3.
六、代码
1.
package demo;
public class Test1{public static void main(String[] args){System.out.println(MyInter.a);System.out.println(MyInter.b);MyInter mi=new MyClass();mi.ma();mi.mb();}
}
//接口 父类型
interface MyInter{public static final int a=5;//公开静态常量int b=90;//默认被public static final int修饰public abstract void ma();void mb();
}//实现类 子类型
class MyClass implements MyInter{public void ma(){System.out.println("ma....");}public void mb(){System.out.println("mb....");}
}
2.
package demo;
public class Test2{public static void main(String[] args){}
}interface IA{void ma();
}interface IB{void mb();
}//接口与接口之间 为 多继承
interface IC extends IA,IB{void mc();
}interface ID{void md();
}//类可以同时实现多个接口;多实现
class MyClass implements ID,IC {public void md(){}public void mc(){}public void ma(){}public void mb(){}}class ClassA{public void me(){}
}