Java关键字default

今天打算写一篇ConcurrentHashMap的源码分析,在看源码过程中发现一个接口中有了default关键字,这是生平第一次见到这个关键字,然后Google了一下,发现是Java8的新特性,所以就打算写一篇关于default的文章。

  default常用于接口中,从它的中文意思行来看,大概能猜个差不多,我们本来写Java接口的时候,是不能有方法体的函数,就类似于C++中的虚函数,default关键字在接口中修饰方法时,方法可以有方法体,来看一个例子。

[java]  view plain  copy
  1. public interface Default {  
  2.   
  3.     default public void method(){  
  4.         System.out.println("method in interface");  
  5.     }  
  6. }  
  一个接口,method方法在使用关键字default后可以有方法体了。

[java]  view plain  copy
  1. public class DefaultImpl implements Default {  
  2.   
  3.     @Override  
  4.     public void method() {  
  5.         System.out.println("method in Class");  
  6.     }  
  7.   
  8.     public static void main(String[] args){  
  9.         Default d = new DefaultImpl();  
  10.         d.method();  
  11.     }  
  12. }  
  DefaultImpl实现了Default接口,最终运行结果:


  而此时如果Default接口再加一个方法呢,如果这个方法没有default关键字修饰,则DefaultImpl没有实现这个方法就会报错,这就体现了default关键字的作用。我们继续修改Default接口。

 Default接口如下:

[java]  view plain  copy
  1. public interface Default {  
  2.   
  3.     default public void method(){  
  4.         System.out.println("method in interface");  
  5.     }  
  6.   
  7.     default public void doSomeThing(){  
  8.         System.out.println("do something in interface");  
  9.     }  
  10. }  
  DefaultImpl并没有重写doSomeThing方法
[java]  view plain  copy
  1. public class DefaultImpl implements Default {  
  2.   
  3.     @Override  
  4.     public void method() {  
  5.         System.out.println("method in Class");  
  6.     }  
  7.   
  8.     public static void main(String[] args){  
  9.         Default d = new DefaultImpl();  
  10.         d.method();  
  11.         d.doSomeThing();  
  12.     }  
  13. }  
  运行结果如下:

  运行结果符合Java多态的特性,default关键字可以让接口中的方法可以有默认的函数体,当一个类实现这个接口时,可以不用去实现这个方法,当然,这个类若实现这个方法,就等于子类覆盖了这个方法,最终运行结果符合Java多态特性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值