接口(interface)中可包含的内容:
接口定义:
public interface 接口名 {}
接口使用:(必须被实现成具体类)
public class 类名 implements 接口名{}
常量定义:public static final 数据类型 常量名 = 常量值;
1、前三个关键字可省略;
2、常量必须赋值;
3、命名使用全大写,多个单词用'_'连接。
eg: public static final int NUM_OF_INTERFACE = 25
使用:接口名.常量名
定义抽象方法:
public abstract 返回值类型 方法名(参数列表);
1、方法的修饰词只能是固定的两个关键字:public abstract
2、上述两个关键字可以选择性省略
eg: public void absFunction1();
abstract void absFunction2();
void absFunction4();
public abstract void absFunction3();
使用:
在实现类中所有抽象方法都需要被覆盖。(注:若不完全覆盖,可将实现类定义成抽象类)
定义默认方法:(可解决接口升级的问题)
(在接口中声明了具体内容,无需再实现类中重写(有需要可在实现类中覆盖重写))
public default 返回值类型 方法名(参数列表){
方法体;
}
定义静态方法:
注:不能通过实现类的对象来调用接口静态方法,也不可通过实现类调用
public static 返回值类型 方法名(参数列表){
方法体;
}
调用方法:只能直接通过接口名称调用,即接口名.方法名
私有方法定义:
1、为解决接口中多个默认方法之间重复代码问题,默认方法
private 返回值类型 方法名(参数列表){
方法体;
}
2、为解决接口中多个静态方法之间重复代码问题,静态默认方法
private staic 返回值类型 方法名(参数列表){
方法体;
}
接口的多继承:一个接口能继承另一个或者多个接口(与类之间的继承比较相似)
注: 1、需重写所有父接口中的抽象方法,若有重名的,只需重写一次
2、如果父接口中的默认方法有重名的,那么子接口需要重写一次,否则可以选择是否重写
eg:interface 接口名 extends 接口名1,接口名2,接口名3... {
// 重写接口中抽象方法【必须】
// 重写接口中默认方法【不重名时可选】
}
接口的多实现:与接口的多继承类似
eg:class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3... {
// 重写接口中抽象方法【必须】
// 重写接口中默认方法【不重名时可选】
}
注:当一个类,既继承一个父类,又实现若干个接口时,父类中的成员方法与接口中
的默认方法重名,子类就近选择执行父类的成员方法。