سطح دسترسی
Kotlin Visibility Modifiers
Visibility Modifier (اصلاحکنندههای دید) به دستهای از کلمات کلیدی گفته میشود که سطح دسترسی کلاسها، اشیاء، اینترفیسها، توابع، پراپرتیها و setter را مشخص میکنند. مثال سادهاش همان کلمۀ private ای است که قبل از یک پراپرتی (متغیر عضو کلاس) قرار میدهید. این کار به کامپایلر میگوید که فقط اعضای همین کلاس میتوانند این پراپرتی را ببینند و لاغیر.
مفعهوم اصلاحکنندههای دید در داخل پکیجهای کاتلین
در کاتلین، پکیج به مجموعهای سازماندهی شده از توابع، پراپرتیها، کلاسها، اشیاء و اینترفیسها گفته میشود که در ابتدای تمام فایلها با کلمه package مشخص شده که جزء کدام پکیج است. این مفهوم از جاوا به ارث رسیده و مختص کاتلین نیست. در واقع پکیج یک مفهوم انتزاعی برای طبقهبندی اجزای مرتبط با یک کار خاص است. مثلاً java.util مجموعهای از کلاسهای کمکی را گردآورده است یا java.lang.math حاوی کلاسهای مفیدی برای انجام اعمال ریاضی است.
ماژول نیز مجموعهای از فایلها گفته میشود که در کنار یکدیگر کامپایل میشوند. به عنوان مثال وقتی در اندروید استودیو یک پروژه جدید میسازید، به صورت خودکار ماژولی تحت عنوان app ساخته میشود. این ماژول تمام سورسکدها، ریسورسها و فایلهای پروژه را در بر میگیرد. وقتی دکمۀ کامپایل را میزنید ماژول فعلی کامپایل میشود. معمولاً اغلب پروژههایی که ایجاد میکنید یک ماژول بیشتر ندارند ولی گاهی اوقات برای ساخت نسخۀ تبلتی یا wear (برای گجتهای پوشیدنی مثلاً ساعت هوشمند اندرویدی) میتوانید به جای ساخت چند پروژه مجزا، برای هر پلتفرم یک ماژول مجزا داخل پروژه تعریف کرد.
- public: همه جا قابل مشاهده است؛
- private: فقط داخل فایلی که تعریف شده دیده میشود؛
- internal: تنها در ماژول فعلی قابل مشاهده است؛
- protected: در پکیجها قابل استفاده نبوده و فقط برای subclassها میتوان استفاده کرد.
اصلاح دید داخل کلاس و اینترفیسها
برای اعضای داخلی یک کلاس مثل فانکشنها و پراپرتیها نیز میتوان از Visibility Modifierها استفاده کرد.
- public: برای هر کلاینتی که تعریف کلاس را ببیند، قابل مشاهده است؛
- private: تنها داخل کلاس قابل مشاهده است؛
- internal: داخل کلاس و زیرکلاسهای آن دیده میشود؛
- protected: برای هر کلاینتی داخل ماژول قابل رؤیت است.
توجه: در صورتی که اعضای protected را بدون تعریف مودیفایر در زیرکلاس override کنید، مودیفایرش به صورت خودکار protected در نظر گرفته میشود.
تغییر Visibility سازنده در کاتلین
به صورت پیشفرض visibility سازنده public است؛ اما میتوان تغییرش داد. برای این کار باید صریحاً از کلیدواژه constructor استفاده کنید.
الان در کد پایین سازنده به صورت پیشفرض public است:
1 2 3 | class Test(val a: Int) { // code } |
ولی به این صورت میتوانید visibility آن را تغییر دهید:
1 2 3 | class Test private constructor(val a: Int) { // code } |
اکنون visibility سازنده private است.
توجه: فانکشنهای محلی، متغیرها و کلاسها نمیتوانند visibility modifier داشته باشند.
Kotlin Visibility Modifiers Kotlin Visibility Modifiers Kotlin Visibility Modifiers Kotlin Visibility Modifiers