目录
1、接口定义
接口是功能的集合,是一种数据类型。接口里定义方法默认是public abstract(抽象方法),没有具体的实现,实现由实现类实现,且必须实现。
JDK7及以前:只能定义全局常量和抽象方法
- 全局常量:public static final的,书写时可以省略
- 抽象方法:public abstract的,可以省略
JDK8:增加了静态方法、默认方法。
JDK 9:增加了私有方法。
2、具体说明
1)抽象方法,默认方法,静态方法使用
- 必须重写接口中所有抽象方法。
- 继承了接口的默认方法,即可以直接调用,也可以重写。
- 接口中定义的静态方法,只能通过接口来调用。
public interface Itest1 {
//抽象方法
void method1();
//默认方法
default void method2() {
System.out.println("default method1");
}
default void method3() {
System.out.println("default method2");
}
//静态方法
static void method4() {
System.out.println("static method");
}
}
public class ClassA implements Itest1{
@Override
public void method1() {
System.out.println("method1 rewrite");
}
@Override
public void method2(){
System.out.println("method2 rewrite");
}
@Test
public void test(){
ClassA classA = new ClassA();
classA.method1();
classA.method2();
classA.method3();
Itest1.method4();
}
}
2)私有方法的使用
- 私有方法:只有默认方法可以调用。
- 私有静态方法:默认方法和静态方法可以调用。
public interface Itest1 {
private void method1(){
System.out.println("私有方法");
}
private static void method2() {
System.out.println("私有静态方法");
}
default void method3() {
method1();
method2();
System.out.println("default method3");
}
static void method4() {
method2();
System.out.println("static method");
}
}
public class ClassA implements Itest1{
@Test
public void test(){
ClassA classA = new ClassA();
classA.method3();
Itest1.method4();
}
}