سوال بپرسید
0

چه تفاوتی بین کلاس های private، public و protected در C++ وجود دارد؟

سوال بپرسید

چه تفاوتی بین کلاس های public، private و protected در ارث بری c++ وجود دارد؟ شاید سوال من خیلی مبتدی باشه و داخل گوگل میشه پیداش کرد ولی هیچ وب سایتی به صورت منظم و دقیق توضیحات تکمیلی نداده.

برچسب ها:
گزارش سوال
پرسیده شده در 3 ماه پیش
آمار بازدید: 251
pirniak (77)

1 پاسخ

2
22 آذر 97 در 19:29

برای پاسخ به سوال شما ابتدا باید درباره این کلمات صحبت کنیم. اینجا سه واژه public، private و protected وجود دارد که برای تعریف یک سری ویژگی ها معمولا در کلاس ها استفاده می شود. به نمونه زیر توجه کنید:

class Base {
    public:
        int publicMember;
    protected:
        int protectedMember;
    private:
        int privateMember;
};
  • در هر نقطه ای و هر مکانی شما می توانید از ویژگی publicMember از کلاس Base استفاده کنید. به عبارت دیگر این ویژگی در تمام کلاس ها فارغ از هرگونه وابستگی در دسترس است.
  • از طرفی تنها کلاس های فرزند Base (و کلاس هایی که از این کلاس فرزند ارث بری می کنند) می توانند از متغییر protectedMember استفاده کنند.
  • و در نهایت تنها کلاس Base می تواند به صورت انحصاری از متغییر privateMember بهره ببرد.

ارائه با مفهوم ارث بری:

برای روشن تر شدن این موضوع فرض کنید کلاس Base (کلاس والد) یک کلاس فرزند به نام Child دارد که تمام ویژگی های کلاس والد را به ارث برده است. حال:

اگر کلاس Base به صورت public نوشته شود، در تمام نقاط برنامه به صورت کامل در دسترس می باشد.

اگر کلاس Base به صورت protected نوشته شود، تنها در کلاس فرزند Child و سایر کلاس های وابسته به آن (کلاس های فرزند Child) قابل دسترس است.

اگر کلاس Base به صورت private نوشته شود، هیچ کلاسی نمی تواند از ویژگی های آن بهره ببرد حتی کلاس فرزند.