مادیفایرهای نمایانی در برنامه نویسی کاتلین
مادیفایرهای نمایانی در برنامه نویسی کاتلین
در این درس از مجموعه آموزش های برنامه نویسی سایت سورس باران، با هر 4 مادیفایرهای نمایانی در برنامه نویسی کاتلین (visibility modifiers) و نحوه عملکرد آنها در سناریوهای مختلف آشنا خواهید شد.
مادیفایرهای نمایانی، کلمات کلیدی هستند که قابلیت مشاهده (دسترسی) کلاس ها، شی ها، اینترفیسها، سازنده ها، توابع، مشخصه ها و setter ها آنها را تنظیم می کنند. ( نکته: شما نمی توانید از مایفایر نمایانی برای تنظیم getter ها استفاده کنید زیرا آنها همواره همان نمایانی مشخصه را میگیرند.
در کلاس و شی در برنامه نویسی کاتلین، به طور خلاصه در مورد مادیفایرهای نمایانی public و private (عمومی و خصوصی) یاد گرفتید. شما با دو مادیفایر نمایانی protected و internal (محافظت شده و داخلی) (و همچنین عمومی و خصوصی) به طور مفصل آشنا خواهید شد.
مادیفایرهای نمایانی درون پکیج در کاتلین
یک پکیج یا بسته مجموعه ای از توابع، مشخصه ها و کلاسها شی ها، و اینترفیسهای مرتبط را سازماندهی می کند.
مادیفایرها | توضیحات |
---|---|
public | اعلان ها همه جا نمایش داده می شوند. |
private | اعلان ها فقط درون همان فایل نمایش هستند. |
internal | اعلان ها درون همان ماژول ( مجموع فایلهای کاتلین که با هم کامپایل می شوند) نمایش داده می شوند. |
protected | اعلان ها در دسترس پکیج ها نیستند. |
توجه: اگر مادیفایر نمایانی در کاتلین مشخص نشده باشد، به طور پیش فرض public (عمومی) است.
بیایید مثالی بزنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// file name: hello.kt package test fun function1() {} // public by default and visible everywhere private fun function2() {} // visible inside hello.kt internal fun function3() {} // visible inside the same module var name = "Foo" // visible everywhere get() = field // visible inside hello.kt (same as its property) private set(value) { // visible inside hello.kt field = value } private class class1 {} // visible inside hello.kt |
مادیفایرهای نمایانی در داخل کلاس ها و اینترفیس ها در کاتلین
نحوه کار مادیفایرهای نمایانی برای اعضا (توابع، مشخصه های) اعلان شده در داخل کلاس به شرح زیر است:
مادیفایرها | توضیحات |
---|---|
public | برای هر کلاینت که می تواند کلاس اعلان کننده را ببیند، قابل مشاهده است |
private | صرفاً درون همان کلاس نمایان است. |
internal | درون کلاس و زیرکلاس های آن نمایان است. |
protected | برای هر کلاینت درون ماژول که می تواند کلاس اعلان را ببیند قابل مشاهده است |
توجه: اگر یک عضو protected را در کلاس مشتق شده بدون مشخص کردن قابلیت نمایانی آن oveeride کنید، نمایانی آن همواره به صورت protected خواهد بود.
مثال؛
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
open class Base() { var a = 1 // public by default private var b = 2 // private to Base class protected open val c = 3 // visible to the Base and the Derived class internal val d = 4 // visible inside the same module protected fun e() { } // visible to the Base and the Derived class } class Derived: Base() { // a, c, d, and e() of the Base class are visible // b is not visible override val c = 9 // c is protected } fun main(args: Array<String>) { val base = Base() // base.a and base.d are visible // base.b, base.c and base.e() are not visible val derived = Derived() // derived.c is not visible } |
تغییر نمایانی یک سازنده در کاتلین
به طور پیش فرض، نمایانی یک سازنده public (عمومی) است. با این حال، می توانید آن را تغییر دهید. برای این منظور، شما باید صریحاً کلید واژه سازنده را اضافه کنید.
سازنده به طور پیش فرض در مثال زیر عمومی است:
1 2 3 |
class Test(val a: Int) { // code } |
در اینجا نحوه تغییر نمایانی آن آورده شده است.
1 2 3 |
class Test private constructor(val a: Int) { // code } |
در اینجا سازنده خصوصی است.
توجه: در برنامه نویسی کاتلین، توابع محلی، متغیرها و کلاس ها نمی توانند مادیفایرهای نمایانی داشته باشند.
لیست جلسات قبل آموزش برنامه نویسی کاتلین
- معرفی کاتلین، Kotlin Hello World – اولین برنامه کاتلین
- انواع متغیرهای پایه در کاتلین
- عملگرهای برنامه نویسی کاتلین
- تبدیل نوع در برنامه نویسی کاتلین
- عبارت ها، گزاره ها و بلوک ها در برنامه نویسی کاتلین
- کامنت ها در برنامه نویسی کاتلین
- ورودی / خروجی پایه در برنامه نویسی کاتلین
- عبارت if در برنامه نویسی کاتلین
- عبارت when در برنامه نویسی کاتلین
- حلقه های while و do … while در برنامه نویسی کاتلین
- حلقه for در برنامه نویسی کاتلین
- عبارت break در برنامه نویسی کاتلین
- عبارت continue در برنامه نویسی کاتلین
- توابع در برنامه نویسی کاتلین
- فراخوانی تابع میانوندی در برنامه نویسی کاتلین
- آرگومان های پیش فرضآرگومان های پیش فرض و نام دار در برنامه نویسی کاتلین
- توابع بازگشتی در برنامه نویسی کاتلین
- کلاس و شی در برنامه نویسی کاتلین
- سازنده ها در برنامه نویسی کاتلین
- Getter ها و Setter ها در برنامه نویسی کاتلین
- وراثت در برنامه نویسی کاتلین
دیدگاه شما