ইন্টারফেস(Interface)

ইন্টারফেস(Interface) আসলে ক্লাশের মতই কতকটা, কিন্তু ক্লাশ না। আবার আচরণ কিছুটা এ্যাবসট্রাক্ট ক্লাশের মত।

১. ইন্টারফেস কোন ক্লাশ না। ইন্টারফেস ডিক্লেয়ার করার নিয়ম দেখলেই বুঝবে।




২. ইন্টারফেসের ভেতরে ভেরিয়েবল থাকতে পারে ভ্যালু সহ, এবং মেথডও থাকতে পারে কিন্তু সেই মেথডের শুধু সিগনেচার থাকবে কোন ইমপ্লিমেন্টেশন থাকবে না। মেথডের ইমপ্লিমেন্টেশন কি তা তো আমরা আগের চ্যাপ্টারেই বুঝেছি।




৩. ইন্টারফেসকে ইন্সট্যানশিয়েট করা যায় না অর্থাৎ এর কোন অবজেক্ট তৈরী করা যায় না।

৪. ইন্টারফেসকে কাজে লাগানোর জন্য কোন ক্লাশে একে ইমপ্লিমেন্ট(implement) করতে হয়, প্যারেন্ট ক্লাশকে যেভাবে আমরা চাইল্ড ক্লাশে extend করতাম কতকটা সেরকম।




৫. ইন্টারফেসকে ইমপ্লিমেন্ট করার পর অবশ্যই ওই ইন্টারফেসে যতগুলো মেথডের সিগনেচার ছিলো সবগুলো ওভাররাইড করে ইমপ্লিমেন্ট করতে হবে।




৬. ইন্টারফেসের অবজেক্ট তৈরি করা না গেলেও এর ইমপ্লিমেন্টেশন ক্লাশের অবজেক্ট তৈরী করা যায়।

কিন্তু সেক্ষেত্রে নিয়মটা জানা দরকার। নিয়মটা হলো:

Interface_name object_name = new implementation_class_name();




এখন আমরা ওই ইন্টারফেসের যত ভেরিয়েবল এবং ইমপ্লিমেন্টেশন ক্লাশে ইমপ্লিমেন্ট করা সব মেথডকে myInterfaceObj অবজেক্ট দিয়ে এ্যাকসেস করতে পারবো।




৭. আগের তৈরী করা কোন ইন্টারফেসকে আবার নতুন কোন ইন্টারফেসে তুমি extend ও করতে পারো। যেমন: