今天复习了一下,搞得真是焦头烂额!于是鼓起勇气,总结一下,以备日后使用。
接口:是一种公共的行为规范,这些行为是与外部交流的通道。
最主要还是要记住,接口里有什么,怎么用?
首先Java 8 中定义接口是这样的:
一、
【修饰符】 interface 接口名 extends 父接口1,父接口2。。。
{
零个到多个常量(静态常量)的定义:这种常量默认被public static final修饰
零个到多个抽象方法定义:自动被public abstract修饰,不管声明方法的时候是否声明
零个到多个内部类,接口,枚举定义:默认都采用public static修饰
零个到多个默认方法或类方法定义:默认都采用public 修饰
}
以下是关于一个接口的定义。
public interface Output{
int Max_Size - 50;//接口中定义的变量只能是常量
void out();//接口里定义的方法,只能是public抽象方法。
void getData(String mag);
//接口中定义的默认方法,需要使用default修饰
default void print(String... msgs){
for(String msg : msgs)
System.out.println(msg);
}
//接口中定义类方法,需要使用static修饰
static String staticTest(){
return "接口中的类方法";
}
}
Java 8 允许在接口中定义默认方法,默认方法必须使用default修饰,该方法不能使用static修饰,无论程序是否指定,默认方法总是使用public修饰(无论开发者是否指定,如果没有指定,系统会自动添加),由于默认方法并没有static修饰,因此不能直接使用接口来调用默认方法。
其中,接口中的成员变量默认是使用public static final修饰的。
注意:如果一个Java源文件里定义了一个public接口,则该源文件的主文件名必须与该接口名相同。
二、
接口的继承
接口支持多继承,也就是说一个接口可以有多个父接口,但是必须是接口,不能是类。
接口不能用于创建实例,但是接口可以用于声明引用类型变量,当使用接口来声明引用类型变量时,这个引用类型变量必须引用到其实现类的对象。
一个类可以实现一个或者多个接口,并且可以继承一个类。但是implements部分必须放在extends部分之后。实现接口方法时,必须使用public访问控制修饰符。因为子类在重写父类方法时,访问权限只能更大或者相等,所以实现类实现接口里的方法,只能用public访问权限。