JAVA8新特性——接口定义增强

  JAVA9都要出来了,JAVA8新特性都没搞清楚,是不是有点掉队哦~

接口定义增强

  在JDK1.8以前,接口是定义的:

     接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

  在JDK1.8之前,接口有如下特性:

  • 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
  • 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
  • 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

  而现在,JDK1.8,打破常规,增强接口定义:

  允许在接口中定义普通方法,用defaultstatic关键字修饰。当然,用这两个关键字定义也有些许不同。

  用default关键字定义方法:在接口中使用default关键字定义方法,需要添加方法体,default见名思意就是说,为这个方法提供一个默认写好的方法体实现。当然,在子接口中也可以继续去覆写它。

 1 interface  MyInterface{
 2      void Method();//接口中原始定义方法的方式
 3 
 4      default void dMethod() {
 5         System.out.println("default 定义的方法!");
 6     }
 7 }
 8 class  InterfaceImpl implements  MyInterface{
 9 
10     @Override
11     public void Method() {//没用default关键字定义的方法,实现接口,就必须要覆写接口中的方法
12         System.out.println("Hello World!");
13     }
14 
15 //    @Override
16 //    public void dMethod() {
17 //        System.out.println("当然,也可以去覆写dMethod!");
18 //    }
19 }
20 public class Main {
21         public static void main(String[] args){
22             InterfaceImpl anInterface = new InterfaceImpl();
23             anInterface.Method();
24             anInterface.dMethod();//调用default方法,输出:"default 定义的方法!"
25         }
26 }

  用Static关键字定义方法:我们知道,在java中,使用static关键字修饰的方法叫做静态方法,它不依赖于某个对象就可以访问。在接口中定义static方法也是如此,可以通过接口名直接调用。

 1 interface  MyInterface1{
 2 
 3     static void sMethod() {
 4         System.out.println("static 定义的方法!");
 5     }
 6 }
 7 public class Main1 {
 8     public static void main(String[] args){
 9         MyInterface1.sMethod();//直接由接口名调用static方法。
10     }
11 }

  总之,接口里面使用default和static定义方法的意义是避免子类重复实现同样的代码。 

  

 

全部评论

相关推荐

04-16 10:27
已编辑
美团_Saas_后端开发
今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,拿到美团offer那会感觉自己天都亮了。没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
沉淀小子:干啥都不丢人啊,生存是必须要的,销售很考验一个人综合素质能力的,好的销售人脉和资源可不比写字楼的白领差啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务