C#-তে ইন্টারফেস মেম্বার দুটিভাবে ইমপ্লিমেন্ট করা যায়: এক্সপ্লিসিট (Explicit) এবং ইম্প্লিসিট (Implicit)।
ইম্প্লিসিট ইমপ্লিমেন্টেশন কী?
ইম্প্লিসিট ইমপ্লিমেন্টেশনে মেম্বারের নামের আগে ইন্টারফেসের নাম থাকে না, কম্পাইলার নিজে বুঝে নেয়। এই মেম্বারগুলো public হিসেবে এক্সপোজড হয় এবং কংক্রিট টাইপ হিসেবে কাস্ট করার সময় অ্যাক্সেসযোগ্য থাকে।
প্রধান বৈশিষ্ট্য:
- ইন্টারফেসের নাম নির্দিষ্ট করার প্রয়োজন নেই
- মেম্বারগুলো স্বয়ংক্রিয়ভাবে
publicহয়ে যায় - অবজেক্ট সরাসরি কল করা যায়, কাস্টিং দরকার নেই
- সীমাবদ্ধতা: একাধিক ইন্টারফেসে একই নামের মেথড থাকলে ইম্প্লিসিট ব্যবহার করা যায় না
উদাহরণ
interface ICar {
void DisplayCar();
}
interface IBike {
void DisplayBike();
}
class ShowRoom : ICar, IBike {
public void DisplayCar() {
Console.WriteLine("Car Display");
}
public void DisplayBike() {
Console.WriteLine("Bike Display");
}
}
class Program {
static void Main() {
ICar car = new ShowRoom();
IBike bike = new ShowRoom();
car.DisplayCar(); // Output: Car Display
bike.DisplayBike(); // Output: Bike Display
// সরাসরি ক্লাস টাইপেও কল করা যায়
ShowRoom sr = new ShowRoom();
sr.DisplayCar();
sr.DisplayBike();
}
}
কখন ব্যবহার করবেন?
- যখন ইন্টারফেসের মেম্বার ক্লাসের পাবলিক API-এর অংশ হওয়া উচিত
- যখন একই সিগনেচারের মেথড একাধিক ইন্টারফেসে না থাকে
- সاده এবং পঠনযোগ্য কোড লেখার জন্য
সতর্কতা
যদি ICar এবং IBike দুটোই Display() নামে মেথড রাখে, তবে ইম্প্লিসিট ইমপ্লিমেন্টেশন ব্যবহার করা যাবে না। সেক্ষেত্রে এক্সপ্লিসিট ইমপ্লিমেন্টেশন বাধ্যতামূলক।