java 8 - default methods
本文是rockops翻譯自Java 8 - Default Methods
Java 8在接口Interface中引入了一個新概念,default method (默認方法,就是在接口定義方法前增加default關(guān)鍵詞做修飾疏尿,譯者注)。這個特性是用于做向上兼容瑰步,讓一些老的接口也可以使用Java 8的lambda特性。
如璧眠,List
或Collection
接口并沒有forEach
方法的聲明缩焦。但如果簡單粗暴地增加這個方法將會破壞所有實現(xiàn)List/Collection
的類。Java 8為此引入了default method责静,這樣List/Collection
接口對于default method就可以有一個默認的實現(xiàn)了袁滥,實現(xiàn)原來接口的類不需要再去實現(xiàn)一遍。(感覺跟abstract class越來越像了灾螃,譯者注)
舉例
public class DefaultMethodTest {
interface Vehicle {
default void print() {
System.out.println("I am a vehicle!");
}
static void blowHorn() {
System.out.println("Blowing horn!!!");
}
}
interface FourWheeler {
default void print() {
System.out.println("I am a four wheeler!");
}
}
static class Car implements Vehicle, FourWheeler {
@Override
public void print() {
Vehicle.super.print();
FourWheeler.super.print();
Vehicle.blowHorn();
System.out.println("I am a car!");
}
}
public static void main(String[] args) {
Vehicle vehicle = new Car();
vehicle.print();
}
}