java8 中的接口有什么变化?

背景

  • 接口里面可以写方法吗?
  • 接口里面不可以写实现好的方法。接口里面的方法可以被继承的类实现。
  • 还是对java8不够理解啊。看下面
    java8 中的接口有什么变化?
    啪啪啪啪!!

default 关键字

default方法是在java8中引入的关键字,也可称为Virtual extension methods——虚拟扩展方法。是指,在接口内部包含了一些默认的方法实现(也就是接口中可以包含方法体,这打破了Java之前版本对接口的语法限制),从而使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。

为什么java8引进了default关键字

总所周知在使用接口的时候,很多人都会遇到一个很尴尬的事情,在实现某个接口的时候,需要实现该接口所有的方法。这个时候default关键字就派上用场了。通过default关键字定义的方法,继承该接口的方法不需要去实现该方法。

SHOW ME CODE

java8 中的接口有什么变化?

  • 我们可以看到继承了上面使用default关键字修饰的接口,并不用实现其中的方法。
  • 再进行调用接口中的方法,我们可以看到。

调用到的是类中实现的方法。所以说我们的接口也能写实现好的方法。

  • 继承接口也可以实现里面的default方法,所以说他default修饰的接口可以被重写。但是重写了他有什么意义呢?这岂不是和类的继承一样了吗?所以说这个default的真正用意是在接口中实现一个方法,或多个方法。而在其他类继承的时候不被实现。
  • 其实说到这里有人就会说,这岂不是和抽象类一样啊。是的很类似,但是抽象类不能被多继承。所以说这也是比较牛逼的,其实我可以这么理解吧可以被多继承的“抽象类”。
    java8 中的接口有什么变化?

总结

  • 接口里面可以有实现好的方法,这个方法得被default关键字实现。
  • 这个方法可以被实现,但是不可以在不同接口里面实现相同的方法。这样的话,在同一个类上继承这个接口就会编译报错。(具体原因我也不清楚,这也许就是规范吧,有大神知道的可以给我讲一讲)(统一接口里面有两个未实现的方法是没有什么问题的)
  • 好的那就这样吧。太难了。。。。。基础还不够扎实!!加油加油!!!!