java8 新特性之默认方法
这里不多介绍,函数接口有且只有一个抽象方法,其他都是默认方法,使用default关键字修饰。
需要注意的有以下几点:
1、多个默认方法
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(); } }
2、函数接口的静态方法,默认是默认方法。
3、添加个菜鸟教程的例子:
public class Java8Tester { 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("我是一辆汽车!"); } }
执行结果:
我是一辆车! 我是一辆四轮车! 按喇叭!!! 我是一辆汽车!