之前学习的接口中只有抽象方法,但是随着JDK版本的更新,接口已经变得不像之前这么单纯了,它也开始出现带有方法体的方法了——默认方法、静态方法、私有方法
一,以前的接口组成
1、常量:用public static final修饰,但是可以省略
2、抽象方法:public abstract修饰,可以省略
二、接口中的默认方法
java8后接口有了默认方法(default修饰)
格式:public default 返回值类型 方法名(){}
默认方法不是抽象方法,所以不会强制重写,但是可以重写,重写时要去掉default关键字
public可以省略
三、接口中的静态方法
java8后接口有了静态方法
格式:跟普通类定义静态方法一样
接口中的静态方法只能通过接口名调用,不能通过实现类名或者对象名调用,所以也无法重写
四、接口中的私有方法
java9后又有了私有方法
由于接口中的方法可以有方法体了,为了当几个方法用到相同的代码时方便,就有了接口中的私有方法
接口中的私有方法只在这个接口中使用
今天的私有方法所有带方法体的方法都可以使用,但是普通的私有方法接口中的静态方法不能调用
然后因为我用的是JDK8所以没法练习接口中的私有方法了
IInter接口,接口中有一个默认方法,一个静态方法,一个抽象方法
public interface IInter {
static void stc(){
System.out.println("静态方法");
}
default void dft(){
System.out.println("默认方法");
}
void show();
}
Inter类,IInter类的实现类,重写了其中的默认方法和抽象方法
public class Inter implements IInter{
@Override
public void show() {
System.out.println("抽象方法");
}
// 默认方法不强制重写但也可以重写
@Override
public void dft() {
System.out.println("重写默认方法");
}
}
测试类,调用各种方法测试结果
public class Test {
public static void main(String[] args) {
IInter ii=new Inter();
ii.show();
ii.dft();
// ii.stc();//错误,接口中的静态方法只能用接口名调用
IInter.stc();
}
}