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!