Java 8 นำเสนอแนวคิดใหม่ของการนำวิธีการเริ่มต้นไปใช้ในอินเทอร์เฟซ ความสามารถนี้ถูกเพิ่มสำหรับความเข้ากันได้แบบย้อนหลังเพื่อให้อินเทอร์เฟซเก่าสามารถใช้เพื่อยกระดับความสามารถนิพจน์แลมบ์ดาของ Java 8
ตัวอย่างเช่น อินเทอร์เฟซ 'List' หรือ 'Collection' ไม่มีการประกาศเมธอด 'forEach' ดังนั้นการเพิ่มวิธีการดังกล่าวจะเป็นการทำลายการใช้งานเฟรมเวิร์กการรวบรวม Java 8 แนะนำวิธีการเริ่มต้นเพื่อให้อินเทอร์เฟซรายการ/คอลเลกชันสามารถมีการใช้งานเริ่มต้นของวิธีการ forEach และคลาสที่ใช้อินเทอร์เฟซเหล่านี้ไม่จำเป็นต้องใช้งานแบบเดียวกัน
ตัวอย่าง
public class Java8Tester {
public static void main(String args[]) {
Vehicle vehicle = new Car(); vehicle.print();
}
}
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!");
}
}
class Car implements Vehicle, FourWheeler {
public void print() {
Vehicle.super.print();
FourWheeler.super.print();
Vehicle.blowHorn();
System.out.println("I am a car!");
}
} ผลลัพธ์
I am a vehicle! I am a four wheeler! Blowing horn!!! I am a car!