এই পোস্টে, আমরা Java এবং C#-তে অ্যাবস্ট্রাক্ট ক্লাস এবং ইন্টারফেসের পার্থক্য বুঝব।
অ্যাবস্ট্রাক্ট ক্লাস
এতে ডিক্লেয়ারেশন এবং ডেফিনিশন উভয় অংশ থাকে।
অ্যাবস্ট্রাক্ট ক্লাস দিয়ে মাল্টিপল ইনহেরিটেন্স ইম্প্লিমেন্ট করা যায় না।
এতে কনস্ট্রাক্টর থাকে।
এতে কিছু স্ট্যাটিক মেম্বারও থাকতে পারে।
এতে পাবলিক, প্রাইভেট, প্রোটেক্টেড সহ একাধিক টাইপের অ্যাক্সেস মডিফায়ার থাকতে পারে।
অ্যাবস্ট্রাক্ট ক্লাসের পারফরম্যান্স খুব ভালো, কারণ এটি দ্রুত।
এটি একটি ক্লাসের কোর আইডেন্টিটি/ফাংশনালিটি ইম্প্লিমেন্ট করতে ব্যবহৃত হয়।
এক ক্লাস শুধু একটি অ্যাবস্ট্রাক্ট ক্লাস ব্যবহার করতে পারে।
যদি অনেক ইম্প্লিমেন্টেশন একই হয় এবং তাদের একটি কমন বিহেভিয়র থাকে, তবে অ্যাবস্ট্রাক্ট ক্লাস ব্যবহার করার পরামর্শ দেওয়া হয়।
অ্যাবস্ট্রাক্ট ক্লাসে মেথড, ফিল্ড, কনস্ট্যান্ট থাকে।
এটি ফুলি ইম্প্লিমেন্টেড, পার্সিয়ালি ইম্প্লিমেন্টেড বা 아예 ইম্প্লিমেন্টেড নাও হতে পারে।
ইন্টারফেস
এতে শুধু ডিক্লেয়ারেশন অংশ থাকে।
ইন্টারফেস দিয়ে মাল্টিপল ইনহেরিটেন্স অর্জন করা যায়।
এতে কনস্ট্রাক্টর থাকে না।
এতে স্ট্যাটিক মেম্বার থাকে না।
এতে পাবলিক অ্যাক্সেস মডিফায়ার থাকে যেহেতু ইন্টারফেসের সব কিছু পাবলিক ধরা হয়।
ইন্টারফেসের পারফরম্যান্স ভালো নয়।
এটি স্লো কারণ এটি সম্বन्धিত ক্লাসে আসল মেথড খুঁজতে সময় নেয়।
এটি একটি ক্লাসের পেরিফেরাল एবিলিটি ইম্প্লিমেন্ট করতে ব্যবহৃত হয়।
একাধিক ইন্টারফেস ব্যবহার করা যায়।
যদি একাধিক ইম্প্লিমেন্টেশন মেথড শেয়ার করে, তবে 'ইন্টারফেস' ব্যবহার করা যেতে পারে।
ইন্টারফেসে শুধু মেথড থাকতে পারে।
এটি ফুলি ইম্প্লিমেন্টেড হতে হবে।