Java 8-এ Default Methods ইন্টারফেসে নতুন বৈশিষ্ট্য হিসেবে যুক্ত করা হয়েছে। এই বৈশিষ্ট্যটি Java ইন্টারফেসে ডিফল্ট মেথড বা default কীওয়ার্ড ব্যবহারের মাধ্যমে নতুন মেথড যোগ করার সুযোগ দেয়। এর ফলে, ইন্টারফেসের মধ্যে মেথডের বাস্তবায়ন সরবরাহ করা সম্ভব হয়েছে, যা ইন্টারফেসের পুরনো ক্লাসগুলোতে নতুন পরিবর্তন না করে মেথডের কার্যকারিতা বাড়াতে সাহায্য করে।
এটি ইন্টারফেসে নতুন ফিচার যোগ করার সময় ক্লাসগুলোর মধ্যে সামঞ্জস্য বজায় রাখতে সাহায্য করে।
১. Default Method এর Syntax
Default method হলো একটি ইন্টারফেসে সংজ্ঞায়িত মেথড, যার একটি ডিফল্ট বাস্তবায়ন থাকে। এটি ইন্টারফেসে default কীওয়ার্ড ব্যবহার করে ডিফাইন করা হয় এবং এতে রিটার্ন টাইপ ও প্যারামিটার থাকতে পারে।
Syntax:
interface MyInterface {
// Default method with implementation
default void myDefaultMethod() {
System.out.println("This is a default method");
}
}এখানে, myDefaultMethod() একটি ডিফল্ট মেথড যা MyInterface ইন্টারফেসে ডিফাইন করা হয়েছে এবং এটি সরাসরি System.out.println() কল করছে।
২. Default Method ব্যবহার
Default method ইন্টারফেসে একটি ডিফল্ট বাস্তবায়ন প্রদান করে, তাই এটি ইন্টারফেসটি এক্সটেন্ড করা ক্লাসগুলিতে সরাসরি ব্যবহার করা যায়। যদি ক্লাসটি ডিফল্ট মেথডকে ওভাররাইড না করে, তবে এটি ইন্টারফেসের ডিফল্ট বাস্তবায়ন ব্যবহার করবে।
ব্যবহার উদাহরণ:
interface MyInterface {
// Default method with implementation
default void myDefaultMethod() {
System.out.println("This is a default method");
}
}
class MyClass implements MyInterface {
// No need to implement myDefaultMethod, it will use the default method
}
public class Main {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.myDefaultMethod(); // This will call the default method
}
}এখানে, MyClass ক্লাসটি MyInterface ইন্টারফেসটি ইমপ্লিমেন্ট করেছে এবং myDefaultMethod() মেথডটি ডিফল্টভাবে ব্যবহার করছে। এর ফলে, MyClass-এ myDefaultMethod() পুনরায় বাস্তবায়ন করার প্রয়োজন পড়েনি।
৩. Default Method কাস্টমাইজেশন
যদিও ডিফল্ট মেথড একটি ইন্টারফেসে ডিফল্ট বাস্তবায়ন দেয়, তবুও এটি কাস্টমাইজ করা সম্ভব। ক্লাসটি যদি ডিফল্ট মেথড কাস্টমাইজ করতে চায়, তাহলে এটি সহজেই সেই মেথডটিকে ওভাররাইড করে নতুন কার্যকারিতা যোগ করতে পারে।
কাস্টমাইজড Default Method উদাহরণ:
interface MyInterface {
default void myDefaultMethod() {
System.out.println("This is a default method");
}
}
class MyClass implements MyInterface {
// Overriding the default method
@Override
public void myDefaultMethod() {
System.out.println("This is the overridden default method");
}
}
public class Main {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.myDefaultMethod(); // This will call the overridden method
}
}এখানে, MyClass ক্লাসটি myDefaultMethod() মেথডটি ওভাররাইড করেছে, ফলে এটি ডিফল্ট বাস্তবায়নের পরিবর্তে নিজস্ব কাস্টমাইজড বাস্তবায়ন ব্যবহার করবে।
৪. Multiple Interfaces with Default Methods
Java 8-এ multiple inheritance সরাসরি ক্লাসে নিষিদ্ধ, তবে একাধিক ইন্টারফেস থেকে ডিফল্ট মেথড গ্রহণ করা সম্ভব। যদি দুটি ইন্টারফেসে একই নামের ডিফল্ট মেথড থাকে, তবে সেই ক্লাসটিকে সেগুলি কাস্টমাইজ করতে হবে।
Multiple Default Methods উদাহরণ:
interface InterfaceA {
default void greet() {
System.out.println("Hello from InterfaceA");
}
}
interface InterfaceB {
default void greet() {
System.out.println("Hello from InterfaceB");
}
}
class MyClass implements InterfaceA, InterfaceB {
// Resolving the conflict by overriding the greet method
@Override
public void greet() {
System.out.println("Hello from MyClass");
}
}
public class Main {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.greet(); // This will call the overridden greet method
}
}এখানে, InterfaceA এবং InterfaceB উভয়ই greet() মেথডের ডিফল্ট বাস্তবায়ন প্রদান করছে। যেহেতু MyClass উভয় ইন্টারফেসকে ইমপ্লিমেন্ট করছে, তাই MyClass ক্লাসটিকে ডিফল্ট মেথডের দ্বন্দ্ব সমাধান করতে greet() মেথডটি ওভাররাইড করতে হয়েছে।
৫. Advantages of Default Methods
- Code Reusability: ইন্টারফেসে মেথডের ডিফল্ট বাস্তবায়ন প্রদান করলে, ইন্টারফেসের সকল ক্লাসকে সেই মেথডটি পুনরায় লিখতে হয় না।
- Backward Compatibility: Java 8 এ ইন্টারফেসে নতুন মেথড যোগ করা সম্ভব হলেও, পুরনো ক্লাসগুলোর জন্য এটি ব্যাকওয়ার্ড কম্প্যাটিবল হয়, কারণ তারা ডিফল্ট মেথড ব্যবহার করতে পারে।
- Multiple Inheritance: ডিফল্ট মেথডের মাধ্যমে ইন্টারফেসের মধ্যে ফাংশনালিটি যোগ করা সম্ভব, যা ক্লাসের মধ্যে একাধিক ইন্টারফেস থেকে ডিফল্ট মেথড গ্রহণ করার ক্ষেত্রে সাহায্য করে।
সারসংক্ষেপ
Java 8-এর Default Methods ইন্টারফেসে নতুন মেথড যোগ করার একটি শক্তিশালী উপায়, যা ক্লাসগুলির মধ্যে কোড পুনঃব্যবহার এবং ব্যাকওয়ার্ড কম্প্যাটিবিলিটি নিশ্চিত করে। ডিফল্ট মেথডে default কীওয়ার্ড ব্যবহৃত হয় এবং এটি একটি ইন্টারফেসের মধ্যে বাস্তবায়ন প্রদান করে। ক্লাস যদি এই মেথডটি কাস্টমাইজ করতে চায়, তাহলে এটি মেথডটি ওভাররাইড করতে পারে। Java 8 এর এই বৈশিষ্ট্যটি ইন্টারফেস ডিজাইনে নতুন ফিচার যোগ করার জন্য অত্যন্ত উপকারী।
Read more