您的位置:首页 > 编程语言 > Java开发

JDK1.8接口的默认实现

2018-03-31 16:47 225 查看
很多时候,别人问我接口和类的区别的时候,我都会回答接口里面只能有抽象方法,而不能够有具体方法,但是今天看Mybatis源码的时候,发现了有一段代码是判断接口里面的默认方法的,于是我发现原来对接口的认识太过于肤浅了。

JDK1.8之后,在接口里面可以定义default方法,default方法里面是可以具备方法体的,当子类实现该接口之后,不需要重写该方法即可以调用该方法。

ok,看看代码

//定义一个接口 里面有一个默认方法
public interface Face {
default String get(){
return "123";
}
}

//定义一个实现类,空类
public class FaceImp implements Face {
}

//写一个测试类
public class Main {
public static void main(String[] args) {
Face face=new FaceImp();
System.out.println(face.get());
}
}

测试结果:
123


我们可以看到,实现类可以直接继承父接口的默认方法,这个默认实现子类也是可以重写的。

现在抽象类和接口就更像了,那么我们来看看现在接口和抽象类的区别:

抽象类只能单继承,接口可以多现实

抽象类中可以用private、protected方法,接口不可以用

那么在接口中加入default方法有什么好处呢?

对于一些公有的方法,直接使用默认的方法,就不用在实现类中写重复代码了。

可以对代码零入侵的加入一些新的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java defalut 接口