[修饰符] interface 接口名 extends 父接口1,父接口2
{
定义常量
抽象方法
内部类,接口,枚举定义
方法定义
}
修饰符可以是public或者省略,当省略的情况下,默认采用包权限访问控制符,只有在相同包结构下才可以那个该接口。
接口名应该与类相同的,一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类。
接口定义的内部类,内部接口,内部枚举默认采用public static,不管你指定了什么,系统都会自动使用public static
public interface Output
{
// 接口里定义的成员变量只能是常量
int MAX_CACHE_LINE = 50;
// 接口里定义的普通方法只能是public的抽象方法
void out();
void getData(String msg);
// 在接口中定义默认方法,需要使用default修饰
default void print(String... msgs)
{
for (String msg : msgs)
{
System.out.println(msg);
}
}
// 在接口中定义默认方法,需要使用default修饰
default void test()
{
System.out.println("默认的test()方法");
}
// 在接口中定义类方法,需要使用static修饰
static String staticTest()
{
return "接口里的类方法";
}
}
接口的成员变量默认是public static final修饰的因此,在不同包下,也可以通过接口访问接口里的成员变量。
public class OutputFieldTest
{
public static void main(String[] args)
{
// 访问另一个包中的Output接口的MAX_CACHE_LINE
System.out.println(lee.Output.MAX_CACHE_LINE);
// 下面语句将引起"为final变量赋值"的编译异常
// lee.Output.MAX_CACHE_LINE = 20;
// 使用接口来调用类方法
System.out.println(lee.Output.staticTest());
}
}
接口的继承,和类继承有点不一样,接口继承完全支持多继承,一个接口有多个直接父类,
一个接口继承多个父接口时,多个接口排在extends之后,多个负借口之间以英文(,)隔开。
interface interfaceA
{
int PROP_A = 5;
void testA();
}
interface interfaceB
{
int PROP_B = 6;
void testB();
}
interface interfaceC extends interfaceA, interfaceB
{
int PROP_C = 7;
void testC();
}
public class InterfaceExtendsTest
{
public static void main(String[] args)
{
System.out.println(interfaceC.PROP_A);
System.out.println(interfaceC.PROP_B);
System.out.println(interfaceC.PROP_C);
}
}
接口主要用途:
-定义变量,也可哟越南语进行强制类型转换
-调用接口中定义的变量
-被其他类实现
【修饰符】 class 类名 extends 父类 implements 接口1,接口2....
{
类体部分
}
实现接口方法时,必须使用public,因为接口里的方法都是public修饰,而子类重写父类方法时权限访问只能更大或者相等,所以实现类实现接口里的方法时只能用public修饰。