با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که علاقمند به دوره آموزش کاتلین هستند. در جلسه گذشته به آموزش کار با interface در این ربان پرداختیم؛ در این جلسه آموزشی قرار است به آموزش کنترل دید در کاتلین بپردازیم.
در مبحث آموزش کنترل دید در کاتلین قرار است مطالبی راجع به تفاوت انواع ویرایشگرها یا modifiers موجود در کاتلین بیاموزیم.
از ویرایشگر Access modifier ها برای محدود کردن استفاده از متغیرها، متودها و کلاس های موجود در برنامه استفاده می شود.
همانند سایر زبان های برنامه نویسی در OOP، این ویرایشگر در مکان های متعددی من جمله هدر کلاس ها یا روش های بیان و عرضه مطالب به کار می رود.
در حال حاضر چهار نوع Access modifier در کاتلین وجود دارد:
کلاس ها، روش ها یا متودها و پکیج ها و مجموعه ها می توانند به کمک یک ویرایشگر private یا private modifier بیان شوند.
به کمک این ویرایشگر ابتدا هر چیزی به صورت خصوصی بیان و سپس از طریق immediate scope این ویرایشگر قابل دسترس خواهد بود.
برای مثال، یک پکیج خصوصی می تواند به کمک فایل خاصی قابل دسترس باشد.
یک کلاس شخصی (private class) و interface می توانند به راحتی و تنها از طریق داده های اعضایشان قابل دسترس باشند.
1 2 3 4 5 | private class privateExample { private val i = 1 private val doSomething() { } } |
در مثال بالا، کلاس “privateExample” و متغیر i هر دو می توانند تنها در یک فایل کاتلین قابل دسترسی باشند.
این ویرایشگر یکی دیگر از ویرایشگرهای قابل دسترس در کاتلین هستند.
از این ویرایشگرها نمی توان برای بیان ها و اعلام های سطح بالا مانند پکیج هایی که قابلیت محافظت ندارند استفاده کرد.
یک کلاس یا interface محافظت شده فقط برای زیر کلاس ها (subclass) های خود آن قابل مشاهده خواهد بود.
1 2 3 4 5 6 7 8 | class A() { protected val i = 1 } class B : A() { fun getValue() : Int { return i } } |
در مثال بالا متغیر به عنوان یک معرفی شده است از این رو فقط برای زیر کلاس های آن قابل مشاهده است.
ویرایشگرهای داخلی جزء ویرایشگرهای جدید در کاتلین هستند.
اگر درکاتلین چیزی به عنوان داخلی یا internal شناسایی شود در این صورت در قسمت internal field قرار خواهد گرفت.
یک پکیج داخلی فقط در داخل ماژول قابل مشاهده است.
یک کلاس داخلی interface تنها توسط کلاس های دیگر موجود در همان بسته یا ماژول قابلیت مشاهده خواهند داشت.
در روش زیر، از یک متود داخلی استفاده شده است.
1 2 3 4 5 | class internalExample { internal val i = 1 internal fun doSomething() { } } |
در مثال فوق، متود”doSomething” نامگذاری می گردد.
سپس متغیر به عنوان داخلی یا internal تفسیر می گردد؛
بنا به دلایل گفته شده، این دو فیلد می توانند تنها در پکیجی که در زیر آن مشخص شده است؛ قابل دسترس باشند.
ویرایشگرهای عمومی از هر نقطه در فضای کاری پروژه قابل دسترسی هستند.
اگر هیچ ویرایشگری از قبل مشخص نشده باشد، به صورت پیش فرض دامنه public یا عمومی برای تعیین می شود.
در تمام مثال های ارائه شده به هیچ ویرایشگری اشاره نشده است.
به دلیل این عدم اشاره، همه مثالها در دامنه عمومی قرار می گیرند.
در مثال زیر می بینید که چطور می توان یک متغیر یا متود عمومی بیان کرد.
1 2 3 4 5 | class publicExample { val i = 1 fun doSomething() { } } |
در مثال بالا،به هیچ یک از ویرایشگرها اشاره نشده است.
بنا به دلیل بالا تمام این روش ها و متغیرها به طور پیش فرض عمومی محسوب خواهند شد.
در این جلسه به آموزش کنترل دید در کاتلین پرداختیم و در خصوص انواع ویرایشگرها و کاربرد آن ها مطالب مفیدی آموختیم.
در جلسه بعد به آموزش افزونه ها در کاتلین می پردازیم.
با پی وی لرن همراه باشید.