گاهی در زبان جاوا نیاز هست راه دسرسی به ویژگی ها و رفتار های (متغیرها و متدها) کلاس خود را کنترل کنیم.یعنی اجازه ندهیم هر کسی از راه رسید از این متدها و متغیر های کلاسمون استفاده کنه،حالشو ببره بدون این که از ما اجازه بگیره!!!!! کنترل سطح دسرسی به ویژگی ها و رفتار های کلاس را میتوان به یک تلفن تشبیه کرد!!! اگر ما تلفن خود را در معرض عموم مردم قرار بدهیم ،همه از آن استفاده میکنند!!! چیزی شبیه تلفن عمومی میشود!
اما اگر تمایل نداشته باشیم که هر کسی از آن استفاده کند آن را در مکانی میگذاریم که دسرسی ان برای عموم مردم محدود باشد!!! مثال دومی که میتوان برای کنترل سطح دسرسی زد همان چت کردن در شبکه های اجتماعی است!! مثلا شما در واتس اپ میتوانید در یک گروه عمومی با سایر دوستان خود چت کنید و همه اعضای گروه از پیام شما با خبر میشوند اما اگر خواستید بصورت کنترل شده و خصوصی چت کنید به pv یا private هم دیگر میروید و هرکسی هم نمیتواند به pv شما دسرسی داشته باشد!
همه این مثال ها را گفتم که کنترل سطح دسرسی را برای شما ملموس تر کرده باشم.حالا برویم سراغ اصل مطلب در جاوا برای کنترل سطح دسرسی از واژه ای تحت عنوان اصلاح کننده های سطح دسرسی (Access level modifiers) استفاده میکنیم.خب این یعنی چه؟! مثلا برای کنترل سطح دسرسی به تلفن خود و محدود کردن دسرسی به ان،تلفن را از یک مکان عمومی به یک مکان خصوصی میبریم که در دسرس مردم نباشد یعنی دسرسی به تلفن خود را از حالت عمومی به خصوصی تغییر یا اصلاح کردیم به این حالت عمومی (public) یا خصوصی (private) اصلاح کننده (modifiers) سطح دسرسی میگویند.
اصلاح کننده های (تغییر دهنده ها یا modifiers) سطح دسرسی در جاوا تعیین میکنند که سایر کلاس ها تا چه اندازه میتوانند از ویژگی ها و رفتار های کلاس فعلی شما استفاده کنند.
پس تا اینجا این اصلاح کننده ها برای کنترل دسرسی سایر کلاس ها به ویژگی ها و رفتار های شما میباشند.در ادامه آموزش به هر یک از اصلاح کننده های سطح دسرسی میپردازیم:
اصلاح کننده سطح دسرسی عمومی – کلمه کلیدی public
💡 کلمه کلیدی public از شناخته شده ترین کلمه های کلیدی جاوا هست و زیاد میبینیمش و باهاش کار کردیم و کار داریم!!!
💡 public از ساده ترین اصلاح کننده های سطح دسرسی در جاوا است زیرا همان طور که از اسمش معلومه ماهیتی مشخص دارد ،دسرسی ان چیزی شبیه تلفن عمومی است یعنی همه کلاس های دیگر میتوانند به متغیرها و متدهایی که از نوع public تعیین کردیم دسرسی داشته باشند.
💡 پس وقتی یک متغیر یا متد از نوع public در کلاس خود تعریف میکنیم برای سایر کلاس ها این ویژگی ها و متدها قابل دسرسی است.
💡 در کل یک کلاس، متغیر، متد، اینترفیس (درآینده بررسیش میکنیم)، سازنده و... وقتی public اعلام میشود،توسط سایر کلاس ها قابل دسرس هستند.
💡 این کلمه کلیدی زمانی مفید است که متغیر ها و متدهای یک کلاس در یک اپلیکیشن باید قابل دسرس برای کل کلاس های برنامه ما باشد.
طبق روال معمول وقتی نیاز هست متغیرهای یک کلاس در همه جای اپلیکیشن به اشتراک و استفاده سایر کلاس ها قرار گیرد،آنان را عمومی (public) اعلام میکنیم.
خب امیدوارم توضیحاتم جامع و کامل و کافی بوده باشه،حالا این اصلاح کننده را با مثال بررسی میکنیم:
مثال: در زیر دو کلاس به نام های MathExample و MainTest در یک پکیج با نام javalike داریم:
package javalike; public class MathExample { public int area; public void calculate_Area_Rectangle( area = length * width; } |
package javalike; public class MainTest { public static void main(String[] args) { } |
✔ کلاس MathExample یک ویژگی به نام area از نوع public و یک متد که مساحت مستطیل را حساب میکند و از نوع public تعریف شده است، دارد. ما قصد داریم در کلاس MainTest یک شی از کلاس MathExample بسازیم و از طریق ان به متدها و متغیر های کلاس MathExample دسرسی داشته باشیم.این یعنی قصد داریم در یک کلاس از ویژگیها و رفتار های کلاس دیگری استفاده کنیم.از ان جهت که متغیرها و متدهای کلاس MathExample از نوع public هست پس سطح دسرسی عمومی است و به راحتی میتوان به ویژگی ها و متد آن در کلاس دیگر نظیر MainTest استفاده کنیم.
✔ در کلاس MainTest یک شی از کلاس MathExample به نام math ایجاد کرده ایم.
✔ حال از طریق شی math به ویژگی ها و رفتار های کلاس MathExample درسی پیدا میکنیم.البته درصورتی میتوانیم در یک کلاس از ویژگی ها و رفتارهای کلاسی دیگر استفاده کنیم که این ویژگی ها و رفتار ها از نوع public باشند.
✔ در تصویر(1) سطح دسرسی شی math که از نوع کلاس MathExample است، در کلاس MainTest مشاهده میکنید.به راحتی این شی میتواند بدون هیچ مانعی به ویژگی ها و رفتار های کلاس MathExample که از نوع public است دسرسی داشته باشد:
✔ همان طور که از متد calculate_Area_Rectangle مشخص هست که متد دو پرامتر از نوع int از ورودی میگیرد و مساحت مستطیل را محاسبه و درون متغیر نمونه area میریزد و در پایان در خروجی این متغیر نمونه را چاپ میکنیم.
✔ حالت قرار گیری دو کلاس در یک پکیج و خروجی آن را در زیر مشاهده میکنید:تصویر(2)
💡 شرط لازم استفاده یک کلاس از ویژگی ها و رفتارهای کلاس دیگر هم پکیج بودن دو کلاس است،یعنی هر دو کلاس در یک پکیج باشد،مثلا دو کلاس بالا هر دو در یک پکیج به نام javalike بودند،حالا شرط بعدی (کافی) بستگی به کنترل سطح دسرسی که برای متغیرها و متدهای خود مشخص کردیم دارد.
💡 اگر دو کلاس هم پکیج نبودند و قصد داشتیم از ویژگی ها و رفتار های کلاس دیگر استفاده کنیم کافیست کلاس مورد نظر درون پکیج مربوطه را import کنیم:
مثال:فرض کنید کلاس A درون پکیج javalike و کلاس B درون پکیج tutorial باشد،قصد داریم در کلاس B یک شی از کلاس A ایجاد کنیم،اما چون کلاس A و B درون پکیج های متفاوتی هستند نمیتوان از کلاس A درون کلاس B شی ساخت!تنها راهش این هست که پکیج کلاس A یعنی javalike را درون کلاس B صدا بزنیم( import )کنیم:
Package javalike;
public class A { } |
package tutorial; import javalike.A; public class B { public static void main(String[] args) { } |
ادامه اموزش را در پایین دنبال میکنیم..........
خروجی مثال بالا: خروجی مثال دو کلاس MathExample و MainTest بصورت زیر است:
Area=1000 |
✔ با توجه به این که متد main در کلاس MainTest بود و یک شی از کلاس MathExample درون کلاس MainTest ایجاد کرده بودیم کافیست کلاس MainTest را اجرا کنیم و بصورت خودکار هر دو کلاس اجرا میشود.
✔ اصلاح کننده سطح دسرسی public کمترین حافظت را از ویژگی ها و رفتار های ما میکند.تنها زمانی از این اصلاح کننده استفاده کنید که کاملا اطمینان داشته باشید که نیاز هست هرچیز و همه چیز به متغیر ها و متدهای ما دسرسی داشته باشند.
✔ در این مثال با روش دسرسی به ویژگی ها و رفتارهایی که از نوع public هستند در کلاس دیگر یاد گرفتیم.حالا سراغ اصلاح کننده(modifiers) دیگر در جاوا میرویم.
✔ اصلاح کننده سطح دسرسی پیشفرض(Default) – بدون کلمه کلمه کلیدی
✔ اصلاح کننده (modifiers) سطح دسرسی پیشفرض (Default) به معنای این هست که ما صریحا برای کلاس ها، متدها، متغیرها و.... اصلاح کننده دسرسی در نظر نمیگیرید یا درکل هیچ کلمه کلیدی برای کلاس ها،متغیرها و...تعریف نمیکنیم.
وقتی متغیرها یا متدهای یک کلاس اصلاح کننده پیشفرض درنظر گرفته میشود برای سایر کلاس ها قابل دسرس هستند.
package javalike; public class A { } |
✔ Modifier یا اصلاح کننده سطح دسرسی برای متغیرهای این کلاس از نوع پیشفرض هستند چون هیچ کلمه کلیدی برای متغیرها تعریف نشده است.
اصلاح کننده (Modifier) سطح دسرسی خصوصی – کلمه کلیدی private
✔ وقتی متدها، متغیرها، سازنده ها و... با کلمه کلیدی private اعلام میشوند،تنها درون بدنه کلاس خودشان قابل دسرس هستند.
✔ با private کردن ویژگیها و رفتار های کلاس خود آن را از دسرس هر نامحرمی بدور نگه میدارید 😊
✔ Modifier یا اصلاح کننده (تغییر دهنده) سطح دسرسی private، سطح دسرسی را بسیار محدود میکند.
✔ کلاس ها (class) و اینترفیس ها (interface) هرگز نمیتوانند از نوع private باشند.
✔ در مورد اینترفیس در جلسات آینده که مربوط به مباحث شی گرایی است خواهیم پرداخت.
✔ متغیرهایی که private تعریف میشوند تعریف میشوند تنها داخل بدنه کلاس قابل دسرس هستند و در کلاس های دیگر بصورت مستقیم قابل دسرس نیستند.
✔ برای دسرسی یک کلاس به متغیر های private درون کلاس دیگر از متدهای public ،getter استفاده میکنیم.
• متدهای getter چی هستند؟!!!! جلوتر بهش میپردازیم! 😊
...ادامه این جلسه آموزشی را میتوانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)
لینک دانلود
نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا عضو کانال تلگرام ما شوید.
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |