zoukankan      html  css  js  c++  java
  • Java重温学习笔记,Java8新特性:接口的默认方法

    简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。我们只需在方法名前面加个 default 关键字即可实现默认方法。

    一、默认方法语法格式如下:

    public interface Vehicle {
       default void print(){
          System.out.println("我是一辆车!");
       }
    }

    二、一个接口有默认方法,考虑这样的情况,一个类实现了多个接口,且这些接口有相同的默认方法,以下实例说明了这种情况的解决方法:

    复制代码
    public interface Vehicle {
       default void print(){
          System.out.println("我是一辆车!");
       }
    }
     
    public interface FourWheeler {
       default void print(){
          System.out.println("我是一辆四轮车!");
       }
    }
    复制代码

    第一个解决方案是创建自己的默认方法,来覆盖重写接口的默认方法:

    public class Car implements Vehicle, FourWheeler {
       default void print(){
          System.out.println("我是一辆四轮汽车!");
       }
    }

    第二种解决方案可以使用 super 来调用指定接口的默认方法:

    public class Car implements Vehicle, FourWheeler {
       public void print(){
          Vehicle.super.print();
       }
    }

    三、Java 8 的另一个特性是接口可以声明(并且可以提供实现)静态方法。示范:

    复制代码
    public class MyDemo {
       public static void main(String args[]){
          Vehicle vehicle = new Car();
          vehicle.print();
       }
    }
     
    interface Vehicle {
       default void print(){
          System.out.println("我是一辆车!");
       }
        
       static void blowHorn(){
          System.out.println("按喇叭!!!");
       }
    }
     
    interface FourWheeler {
       default void print(){
          System.out.println("我是一辆四轮车!");
       }
    }
     
    class Car implements Vehicle, FourWheeler {
       public void print(){
          Vehicle.super.print();
          FourWheeler.super.print();
          Vehicle.blowHorn();
          System.out.println("我是一辆汽车!");
       }
    }
    复制代码

    输出如下:

    %JAVA_HOME%injava "MyDemo" ...
    我是一辆车!
    我是一辆四轮车!
    按喇叭!!!
    我是一辆汽车!

     本文出自:

    https://www.runoob.com/java/java8-default-methods.html

  • 相关阅读:
    观察者模式(学习笔记17)
    web前端安全编码(模版篇)
    如何获取元素最终使用的css值
    Range在各浏览器下的问题和常见处理办法
    总结cookie的一些问题
    js 设计模式单例模式
    web端不能登录问题汇总
    多域名登录方案思考
    深入分析js中的constructor 和prototype
    由一次代码优化想到的Js 数据类型
  • 原文地址:https://www.cnblogs.com/nayitian/p/14921031.html
Copyright © 2011-2022 走看看