Java 8 นำเสนอแนวคิดใหม่ของการนำเมธอด default ไปใช้งานในอินเทอร์เฟซ ความสามารถนี้ถูกเพิ่มเข้ามาเพื่อความเข้ากันได้กับรุ่นก่อน (backward compatibility) เพื่อให้อินเทอร์เฟซเก่าๆ สามารถใช้ประโยชน์จากความสามารถ lambda expression ของ Java 8 ได้
ตัวอย่างเช่น อินเทอร์เฟซ ‘List’ หรือ ‘Collection’ ไม่มีการประกาศเมธอด ‘forEach’ การเพิ่มเมธอดแบบนี้จะทำลายการนำไปใช้งานของ collection framework ทั้งหมด Java 8 นำเมธอด default มา เพื่อให้ List/Collection interface สามารถมีการนำไปใช้งาน default ของ forEach method และคลาสที่นำอินเทอร์เฟซเหล่านี้มาใช้งาน ไม่จำเป็นต้องนำเมธอดเดียวกันไปใช้งานอีก
ตัวอย่าง
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!