在Java8以前,我们知道接口中是不能够有方法的具体实现的,但是Java8中则允许有接口的默认实现。
我们先来个例子感受一下:
![5679451-908cddae636140d5.png](https://i-blog.csdnimg.cn/blog_migrate/166b27b88f96453b21dffa243a6993e8.png)
注意默认方法的关键字是default。接下来我们写个实现类测试一下:
![5679451-7c21e92ab47e921a.png](https://i-blog.csdnimg.cn/blog_migrate/c27a297d1dfface48e60e98812538d37.png)
这时候没有实现接口的方法编译器也不会报错。
![5679451-d6962c6d060afc6a.png](https://i-blog.csdnimg.cn/blog_migrate/e7f355635abccded78c726ff99b98122.png)
从上图可以看到,我们能直接使用接口中的默认方法。
除此之外,接口中还允许有静态方法:
![5679451-eb8c38a245efb7db.png](https://i-blog.csdnimg.cn/blog_migrate/26449bcf947e16ed7a04bb2b15e2fa3a.png)
这时候可以直接使用接口名.方法名去调用
![5679451-bebe1b4f78575631.png](https://i-blog.csdnimg.cn/blog_migrate/be4ebe35034250728277ca155e480b1a.png)
接下来说一个需要注意的点:
1. 类优先原则
![5679451-c6252ec2799d78b5.png](https://i-blog.csdnimg.cn/blog_migrate/82de6bd04feecd3909921f29f8e9ac70.png)
在Java8以前,我们知道接口中是不能够有方法的具体实现的,但是Java8中则允许有接口的默认实现。
我们先来个例子感受一下:
注意默认方法的关键字是default。接下来我们写个实现类测试一下:
这时候没有实现接口的方法编译器也不会报错。
从上图可以看到,我们能直接使用接口中的默认方法。
除此之外,接口中还允许有静态方法:
这时候可以直接使用接口名.方法名去调用
接下来说一个需要注意的点: