Java8的default和static关键字的使用讲解
1. default和static关键字
a.default 用在接口中, 为该接口的实现类的方法. --> 不能通过接口直接调用.
static 也是用在接口中, 同Class中的static方法一样, 是类级别的方法, 而不是对象的方法. --> 可以通过接口直接调用.
b.一个接口可以有多个default方法, 也可以有多个static方法.
2. default 在使用中的注意事项
如下面的例子
有两个接口, InterA和InterB, 都有一个方法, 为defaultFunction()
,ClassA仅仅为InterA的实现类. 那么没有报错. 当调用ClassA的defaultFunction()时,会自动调取InterA的方法.
但是ClassAB同时为InterA和InterB的实现类.当调用ClassAB的defaultFunction()时,不知道该调取哪个接口的了,所以,ClassAB需要自己重写这个方法.
3. Static则和default不同,
打印结果
4. 源码
public class DefaultDemoApp { public static void main(String[] args) { new ClassA().defaultFunction(); new ClassAB().defaultFunction(); } } interface InterA { default void defaultFunction() { System.out.println("This is A defaultFunction"); } static void staticFunction() { System.out.println("This is A status function"); } } interface InterB { default void defaultFunction() { System.out.println("This is B defaultFunction"); } static void staticFunction() { System.out.println("This is B status function"); } } class ClassA implements InterA { } class ClassAB implements InterA, InterB { @Override public void defaultFunction() { InterB.staticFunction(); } }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
相关文章
SpringBoot之@ConditionalOnProperty注解使用方法
在平时业务中,我们需要在配置文件中配置某个属性来决定是否需要将某些类进行注入,让Spring进行管理,而@ConditionalOnProperty能够实现该功能,文中有详细的代码示例,需要的朋友可以参考下2023-05-05springboot使用redisRepository和redistemplate操作redis的过程解析
本文给大家介绍springboot整合redis/分别用redisRepository和redistemplate操作redis,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2022-05-05
最新评论