জাভাতে ইন্টারফেস হলো মেথড প্রোটোটাইপের স্পেসিফিকেশন। একটি ইন্টারফেস ইমপ্লিমেন্ট করার সময় তার সব абস্ট্রাক্ট (abstract) মেথড ওভাররাইড করা বাধ্যতামূলক। যদি কোনো абস্ট্রাক্ট মেথড ওভাররাইড না করা থাকে, তবে কম্পাইল টাইম এরর হয়।
উদাহরণ: সব মেথড ওভাররাইড না করলে এরর
interface Sample {
void demoMethod1();
void demoMethod2();
void demoMethod3();
}
public class InterfaceExample implements Sample {
public void demoMethod1() {
System.out.println("This is demo method-1");
}
public void demoMethod2() {
System.out.println("This is demo method-2");
}
// demoMethod3() ওভাররাইড করা হয়নি
// কম্পাইল এরর হবে
}
কম্পাইল টাইম এরর
InterfaceExample.java:6: error: InterfaceExample is not abstract and does not override abstract method demoMethod3() in Sample
public class InterfaceExample implements Sample{
^
1 error
সমাধান ১: বাকি মেথডগুলো খালি ইমপ্লিমেন্টেশন দিয়ে ওভাররাইড করুন
public class InterfaceExample implements Sample {
public void demoMethod1() {
System.out.println("This is demo method-1");
}
public void demoMethod2() { } // খালি বডি
public void demoMethod3() { } // খালি বডি
// ...
}
সমাধান ২: বাকি মেথডগুলো default মেথড বানান (Java 8+)
Java 8 থেকে ইন্টারফেসে default মেথড ডিফাইন করা যায়। ডিফল্ট মেথড ওভাররাইড করা বাধ্যতামূলক নয়।
interface Sample {
void demoMethod1(); // অবস্ট্রাক্ট - অবশ্যই ওভাররাইড করতে হবে
default void demoMethod2() { // ডিফল্ট - ওভাররাইড করা অপশনাল
System.out.println("Default demo method 2");
}
default void demoMethod3() { // ডিফল্ট - ওভাররাইড করা অপশনাল
System.out.println("Default demo method 3");
}
}
public class InterfaceExample implements Sample {
public void demoMethod1() {
System.out.println("This is demo method-1");
}
// demoMethod2, demoMethod3 ওভাররাইড করা লাগবে না
public static void main(String args[]) {
InterfaceExample obj = new InterfaceExample();
obj.demoMethod1();
obj.demoMethod2(); // ডিফল্ট ইমপ্লিমেন্টেশন चलेगा
obj.demoMethod3(); // ডিফল্ট ইমপ্লিমেন্টেশন चलेगा
}
}
আউটপুট
This is demo method-1 Default demo method 2 Default demo method 3
সারসংক্ষেপ: শুধু একটি মেথড ওভাররাইড করতে চাইলে — বা বাকিগুলো খালি বডি দিয়ে ওভাররাইড করুন, বা ইন্টারফেসে বাকিগুলো default মেথড হিসেবে ডিফাইন করুন।