sOlOHsU's Blogβ

灯火阑珊处

Java 8 简明教程(1): Default Method

接口的默认方法

Java 8 中我们可以利用 default 关键字来为接口添加非抽象方法。这个特性也被称为扩展方法

例子如下:

1
2
3
4
5
6
7
 interface Formula {
      double calculate(int a);
  
      default double sqrt(int a) {
          return Math.sqrt(a);
      }
  }

除了calculate方法这个抽象方法之外,Formula接口还定义了一个默认方法sqrt,接口的实现类只需要实现抽象方法calculate,而默认方法sqrt是直接可以拿来用的。

1
2
3
4
5
6
7
8
9
 Formula formula = new Formula() {
      @Override
      public double calculate(int a) {
          return sqrt(a * 100);
      }
  };

  formula.calculate(100);     // 100.0
  formula.sqrt(16);           // 4.0

上面的formula对象使用匿名对象的方式实现了Formula接口。代码看起来比较啰嗦,用了6行代码实现了一个简单的计算sqrt(a * 100)。在后面的教程中,我们将会看到在Java 8 中如何使用更简单的方式来实现一个单方法对象。