zoukankan      html  css  js  c++  java
  • 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定义方法的意义是避免子类重复实现同样的代码。 

      

  • 相关阅读:
    raw_input() 与 input() __ Python
    局域网文件夹上传解决方案
    网页文件夹上传解决方案
    前端文件夹上传解决方案
    JavaScript文件夹上传解决方案
    JS文件夹上传解决方案
    VUE文件夹上传解决方案
    WebUploader文件夹上传解决方案
    B/S文件夹上传解决方案
    CSharp文件夹上传解决方案
  • 原文地址:https://www.cnblogs.com/hyyq/p/7420534.html
Copyright © 2011-2022 走看看