@font-face { font-family: "Tahoma"; }p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0in 0in 0.0001pt; text-align: right; direction: rtl; unicode-bidi: embed; font-size: 12pt; font-family: "Times New Roman"; }p { margin-right: 0in; margin-left: 0in; font-size: 12pt; font-family: "Times New Roman"; }span.SpellE { }div.Section1 { page: Section1; }
سطح دسترسی در کلاسها
در مورد سطح دسترسی به متغييرها و توابع در يک کلاس بحث خواهيم کرد . سطح دسترسی يعنی چی؟
يعنی يک کلاس برای محتويات خود يکسری دسته بندی را رعايت می کند که هر کسی به هر چيزی نتواند دسرسی داشته باشد که در بعضی موارد اگر رعايت نشود می تواند باعث بسياری مشکلات شود.
در يک کلاس ۳ نوع دسترسی وجود دارد :
۱- Public:در اين نوع دسترسی هيچ محدوديتی اعمال نمی شود و هر چيزی چه داخلی و چه خارجی می تواند از ان استفاده کند .
۲- Private: اين نوع دسترسی بر عکس نوع قبل عمل می کند . يعنی غير از توابع عضو اين کلاس هيچ چيز ديگری نمی تواند به آنها دسترسی داشته باشد . مثلا وقتی يک شئ از اين کلاس تعريف می کنيم از طريق شئ نمی توانيم مستقيما به ايم نوع متغييرها يا توابع دسترسی داشته باشيم اما خود توابع عضو اين کلاس ميتوانند در کد نويسی خود از اين نوع استفاده کنند که در آينده بيشتر آشنا خواهيم شد .
۳- Protected:در این نوع نیز شئی که از کلاس تعریف می شود نمی تواند به این نوع دسترسی داشته باشد . اين نوع تعريف خاص خود را دارد که بعد از بحث ارث بری قابل ذکر است و در اينجا تنها نامی از آن برای تکميل بحث آورده شده است .
*نکته قابل ذکر اين است که غالبا از دو نوع ۱و۲ استفاده می شود و از نوع ۳ خيلی کم استفاده خواهيد کرد .
در کلاس این انواع دسترسی با ۳ کلمه کلیدی ذکر شده تعیین می شوند :
اگر در ابتدای کلاس باشیو و هیچ کدام را ننویسیم متغییرها و توابع تعریفی تا کلمه کلیدی دیگر همه private محسوب می شوند تا زمانی که از یکی از دو کلمه دیگر استفاده شود . بعد از آن نیز بقیه از این کلمه استفاده شده تبعیت می کنند تا کلمه کلیدی بعدی .
------------------------------------------------------------------------------------------
در ادامه يک نمونه مثال از سطح دسترسی آورده شده و در ادامه آن مثالهای اشتباه و درست نيز آورده شده است :
class Cat
}
;int a,b
;(void setage(int age
:public
;int c,d
;(void setlength(int length
:protected
;int e
;(void setwidth(int width
}
-------------------------------------
در بالا يک نمونه کلاس آورده شده حالا يک شئ از آن تعريف کرده و مثالهای درست و غلط را ذکر ميکنم :
;Cat m
مثالهای درست :
;m.a=10
;m.b=80
;()m.setage
مثالهای غلط :
;m.b=20
;m.c=13
;()m.setlength
;m.e=90
;()m.setwidth