zoukankan      html  css  js  c++  java
  • java8之接口增强

      Java8是由oracle公司于2014年3月正式发布,它是继java5 以来最重要的发布版本。Java8包含了很多新的特性,可以简化开发,提升代码的可读性。

      Java8的一些重要新特性包括:

          l 接口增强

          l 方法引用

          l Lambda表达式

          l Stream

      其中还有一些其他的特性,比如注解的更新,以及一些新的API等。以上四个特性在java8的开发中会比较常用。因为接口增强特性比较独立,而其他三个特性或多或少都有关联关系。这里先记录下接口增强特性的学习笔记。

    1.什么是接口增强?

      在java8以前的版本中,定义一个接口时,所有的方法必须是抽象方法,不能有具体实现,这是java语法规定的。但是在java8中定义一个接口时,在满足特定的前提下,可以有方法的具体实现。这样一个接口中可以有属性,可以有抽象方法,也可以有具体的方法,这跟java8以前的接口比,明显接口的功能变得强大了。

    2.接口中如何定义具体的方法实现?

      首先,接口中定义具体的方法实现是有限制的,它不能像我们在一个普通类那样随便定义方法实现,它只能定义defaultstatic类型的方法。示例代码如下:

    interface MyInterface {
        public void print();
    
        // default 和 static 方法的出现为了解决实现该接口的子类代码重复的问题
        default void defaultMethod() {
            System.out.println("default method invoked! ");
        }
        
        default int add(int a, int b){
            return a + b;
        }
        
        static void staticMethod() {
            System.out.println("static method invoked! ");
        }
        
        static int multiply(int a, int b){
            return a * b;
        }
        
        //...
    }
    View Code

      除了关键字修饰,其他跟普通的方法定义并没有什么不同。

    3.如何调用

      1)default方法调用

      定义一个类实现该接口,new该类的实例,调用即可。

      2)static方法调用

      类名.方法名() 调用,这跟以前的静态方法调用方式一样。

      示例代码如下:

    public class InterfaceTest {
        public static void main(String[] args) {
            
            MyInterface msg = new InterfaceImpl();
            msg.print();
    
            msg.defaultMethod(); //调用default方法
            MyInterface.staticMethod(); //调用static方法
        }
    }
    
    interface MyInterface {
        public void print();
    
        // default 和 static 方法的出现为了解决实现该接口的子类代码重复的问题
        default void defaultMethod() {
            System.out.println("default method invoked! ");
        }
        
        default int add(int a, int b){
            return a + b;
        }
        
        static void staticMethod() {
            System.out.println("static method invoked! ");
        }
        
        static int multiply(int a, int b){
            return a * b;
        }
        
        //...
    }
    View Code

    4. 应用场景

      想象这样一中情况,当多个类实现一个接口的某个方法时,方法的具体实现代码相同,这样就会造成代码重复问题。接口增强就相当于把公共的代码抽离出来,放入接口定义中,这样实现类对于该方法就不用重新定义,直接调用即可,这很好的解决了实现该接口的子类代码重复的问题。

  • 相关阅读:
    猜拳游戏GuessGame源码
    基于vitamio的网络电视直播源码
    EarthWarrior3D游戏ios源码
    类似material design的电影应用源码
    四季电台应用项目源码
    高仿一元云购IOS应用源码项目
    非常不错的点餐系统应用ios源码完整版
    仿哔哩哔哩应用客户端Android版源码项目
    《你最美》换发型应用源码
    最新win7系统64位和32位系统Ghost装机稳定版下载
  • 原文地址:https://www.cnblogs.com/xxez-d/p/5989944.html
Copyright © 2011-2022 走看看