接口--用关键字interface来定义
接口定义跟类定义很像,也分为接口声明和接口体 例如:
interface printable { //接口声明
final int max=100;
void add (); //接口体
float sum(float x, float y);
接口体包含:声明(没有变量)和抽象方法
1.接口体中只有抽象方法,没有普通方法
2.接口体中所有的常量的访问权限一定都是public,而且都是static常量(允许省略public,final和static修饰符)
3.所有抽象方法的访问权限一定都是public(允许省略public和abstract修饰符)
例如:
public static final int MAX = 100; //等价写法:int MAX =100;
public abstract void add(); //等价写法 : void add();
实现接口(implement):
接口由类来实现以便使用接口中的方法。(在类的声明中用关键字implement声明该类实现一个或多个接口)
注:如实现多个接口,则用逗号隔开接口名,例如:
class A implement Printable,Addable //A类实现printable和add able接口
重写接口中的方法:
如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。
重写:1.去掉abstract修饰符 2.给出方法体 3.方法的访问权限明显的用public修饰
注:抽象类既可以重写接口中的方法,也可以直接拥有接口中的方法;
非抽象类则必须重写
关键字interface前面加上public关键字时,为public接口:可以被任何一个类实现
interface前不加public时,则为友好接口,只能被与该接口在同一包中的类实现
如果父类实现了某个接口,子类也自然实现了该接口,不必再用implement声明
接口的UML图
接口回调:
用接口声明的变量称作接口变量
例如: Com com ;
假设implecom类是实现com接口的类,object对象为implecom类创建的,object对象不仅可以调用implecom类中原有的方法,也可以调用implecom类实现的接口方法
接口多态
由接口产生的多态是指不同的类在实现同一功能具有不同的实现方式,那么接口变量在回调接口方法时就可能具有多种形态
abstract类与接口的比较
1.abstract类和接口都可以有abstract方法
2.接口中只可以有常量,不可以有变量,而abstract类既可以有常量也可以有变量
3.abstract类中可以有非abstract方法,接口不可以