কম্পিউটার টিউটোরিয়াল

C++-এ private, public, protected ইনহেরিট্যান্স পার্থক্য

ডেটা হাইডিং (Data Hiding) অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং-এ একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা প্রোগ্রামের ফাংশনগুলোর ক্লাসের ইন্টারন্যাল রিপ্রেজেন্টেশনে সরাসরি অ্যাক্সেস রোধ করে। ক্লাস মেম্বারগুলোর অ্যাক্সেস রেস্ট্রিকশন নির্দিষ্ট করা হয় অ্যাক্সেস স্পেসিফায়ার (access specifier) দিয়ে: public, private, protected।

ডিফল্ট অ্যাক্সেস (ক্লাসে) হলো private।

সিনট্যাক্স উদাহরণ

class Base {
public:
    // পাবলিক মেম্বার: কোথা থেকে কখনো অ্যাক্সেসযোগ্য
protected:
    // প্রোটেক্টেড মেম্বার: ডেরাইভড ক্লাস থেকে অ্যাক্সেসযোগ্য
private:
    // প্রাইভেট মেম্বার: শুধু ক্লাস এবং ফ্রেন্ড ফাংশন থেকে অ্যাক্সেসযোগ্য
};

তুলনামূলক ব্যাখ্যা

অ্যাক্সেস স্পেসিফায়ারক্লাসের ভিতর থেকেডেরাইভড ক্লাস থেকেবাহ্যিক কোড (main ইত্যাদি) থেকে
public✅ অ্যাক্সেসযোগ্য✅ অ্যাক্সেসযোগ্য✅ অ্যাক্সেসযোগ্য
protected✅ অ্যাক্সেসযোগ্য✅ অ্যাক্সেসযোগ্য❌ অ্যাক্সেসযোগ্য নয়
private✅ অ্যাক্সেসযোগ্য❌ অ্যাক্সেসযোগ্য নয়❌ অ্যাক্সেসযোগ্য নয়

ইনহেরিট্যান্স টাইপ অনুযায়ী বেস ক্লাস মেম্বারের অ্যাক্সেসিবিলিটি

বেস ক্লাস মেম্বারpublic inheritanceprotected inheritanceprivate inheritance
publicpublicprotectedprivate
protectedprotectedprotectedprivate
privateঅ্যাক্সেসযোগ্য নয়অ্যাক্সেসযোগ্য নয়অ্যাক্সেসযোগ্য নয়

মূল সিদ্ধান্ত:

  • public inheritance — "is-a" রিলেশনশিপ (যেমন: Dog is an Animal)। সবচেয়ে সাধারণ।
  • protected inheritance — দুর্লভ, মূলত লাইব্রেরি ডেভেলপমেন্টে ব্যবহৃত হয়।
  • private inheritance — "is-implemented-in-terms-of" (কম্পোজিশনের বিকল্প)۔ বেস ক্লাসের ইন্টারফেস এক্সপোজ করা না চাইলে।

টিপ: প্রাইভেট মেম্বারকে ডেরাইভড ক্লাস থেকে অ্যাক্সেস করতে চাইলে protected করুন বা পাবলিক/প্রোটেক্টেড গেটার/সেটার দিন।

  1. ব্যক্তিগত কী এবং সর্বজনীন কীর পার্থক্য

  2. C++-এ ডট (.) অপারেটর এবং -> (অ্যারো) অপারেটরের পার্থক্য

  3. C#-তে Class এবং Structure-এর পার্থক্য

  4. জাভাতে ইনহেরিটেন্স এবং কম্পোজিশনের পার্থক্য