জাভা ৮ ইন্টারফেসে ডিফল্ট মেথড ইমপ্লিমেন্টেশনের নতুন কনসেপ্ট শুরুর করেছে। এই ক্ষমতা ব্যাকওয়ার্ড কম্প্যাটিবিলিটির জন্য যোগ করা হয়েছে যাতে পুরনো ইন্টারফেসগুলো জাভা ৮-এর ল্যাম্বডা এক্সপ্রেশন ক্ষমতা ব্যবহার করতে পারে।
উদাহরণস্বরূপ, List বা Collection ইন্টারফেসে forEach মেথড ডিক্লেয়ারেশন নেই। এই মেথড যোগ করলে কালেকশন ফ্রেমওয়ার্ক ইমপ্লিমেন্টেশন ব্রেক হয়ে যাবে। জাভা ৮ ডিফল্ট মেথড শুরুর করেছে যাতে List/Collection ইন্টারফেসে 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!