مشخصات مقاله
-
684
-
0.0
-
1938
-
0
-
0
کنترل امکان(Visibility control) دیدن در Kotlin
کنترل امکان دیدن در Kotlin
در این بخش میخواهیم به اصلاحکنندههای مختلف موجود در زبان Kotlin بپردازیم. اصلاحکنندهی دسترسی (access modifier) اصلاحکنندهای است که در محدودسازی استفاده از متغیرها، متدها و کلاسهای استفادهشده در برنامه کاربرد دارد. این اصلاحکننده مانند زبانهای دیگر برنامهنویسی شیءگرا در چندین مکان مانند هدر کلاس یا در اعلان متد قابل استفاده است. چهار اصلاحکنندهی دسترسی در Kotlin پیشبینی شدهاند.
خصوصی(Private)
کلاسها، متدها و بستهها را میتوان با استفاده از اصلاحکنندهی خصوصی اعلان کرد. بعد از آنکه چیزی بهعنوان یک عنصر خصوصی اعلان میشود، دسترسی به آن از داخل دامنهی بیواسطهی آن امکانپذیر میشود. برای نمونه، دسترسی به یک بستهی خصوصی تنها از داخل فایل مشخص آن امکانپذیر است. همچنین دسترسی به رابط یا کلاس خصوصی تنها از طریق اعضای دادهای و ... آن ممکن است.
private class privateExample {
private val i = 1
private val doSomething() {
}
}
در مثال بالا، دسترسی به privateExample و متغیر i تنها در یک فایل Kotlin یکسان امکانپذیر است چرا که آنها بهصورت خصوصی در بلوک اعلان لحاظ شدهاند.
حفاظتشده(Protected)
اصلاحکنندهی حفاظتشده نیز نوع دیگری از اصلاحکنندههای موجود در Kotlin است که در حال حاضر در اعلانهای سطح بالا نمیتوان از آن استفاده کرد؛ چون هر بستهای را نمیتوان به حالت حفاظتشده درآورد. یک رابط یا کلاس حفاظتشده را تنها میتواند زیرکلاس آن ببیند.
class A() {
protected val i = 1
}
class B: A() {
fun getValue(): Int {
return i
}
}
در مثال بالا، متغیر i بهعنوان یک متغیر حفاظتشده اعلان شده است؛ به همین دلیل تنها زیرکلاس آن میتواند آن را ببیند.
داخلی(Internal)
اصلاحکنندههای داخلی، اصلاحکنندههایی هستند که اخیراً به Kotlin اضافه شدهاند. اگر چیزی بهعنوان یک عنصر داخلی نشان شود در این صورت این زمینهی مشخص باید داخل زمینهی داخلی قرار بگیرد. دیدن یک بستهی داخلی تنها از داخل ماژولی امکانپذیر است که این بسته در آن پیادهسازی شده است. دیدن رابط یک کلاس داخلی نیز تنها توسط کلاسهای دیگر موجود در همان بسته یا ماژول امکانپذیر است. در مثال زیر چگونگی پیادهسازی یک متد داخلی نشان داده شده است:
class internalExample {
internal val i = 1
internal fun doSomething() {
}
}
در مثال بالا، متد doSomething و متغیر آن بهصورت داخلی بیان شدهاند؛ بنابراین، تنها از داخل بستهای که این متد در آن اعلان شده است امکان مشاهدهی این دو زمینه فراهم است.
عمومی(Public)
از هر جایی از فضای کار پروژه میتوان به اصلاحکنندههای عمومی دسترسی پیدا کرد. اگر هیچ اصلاحکنندهای مشخص نشده باشد، در این صورت بهصورت پیشفرض دامنهی آن بهصورت عمومی تعریف میشود. در مثالهای قبل با توجه به اینکه اسمی از هیچ اصلاحکنندهای نبردهایم، دامنهی تمامی آنها بهصورت عمومی است. در ادامه جهت درک بهتر چگونگی اعلان یک متد یا متغیر عمومی، یک مثال آورده شده است.
class publicExample {
val i = 1
fun doSomething() {
}
}
در مثال بالا با توجه با این که حرفی از هیچ اصلاحکنندهای به میان نیامده است، تمامی این متدها و متغیرها بهصورت پیشفرض عمومی هستند.