کلاس‌ های تودرتو و داخلی در برنامه نویسی کاتلین

4 سال پیش
کلاس‌ های تودرتو و داخلی در برنامه نویسی کاتلین

کلاس ‌های تودرتو و داخلی در برنامه نویسی کاتلین

در این درس از سری آموزش برنامه نویسی سایت سورس باران با موضوع کلاس‌ های تودرتو و داخلی در برنامه نویسی کاتلین (nested and inner class) در خدمت شما می باشیم.

کلاس‌ تودرتو در برنامه نویسی کاتلین

برنامه نویسی کاتلین مانند جاوا، به شما امکان می دهد یک کلاس را در کلاس دیگری تعریف کنید که به عنوان کلاس تودرتو شناخته می شود.

class Outer {
    ... .. ...
    class Nested {
        ... .. ...
    }
}

 

از آنجا که کلاس Nested (تودرتو)  عضوی از کلاس محصور Outer است، امکان  استفاده از نماد نقطه (.) برای دسترسی به کلاس Nested و اعضای آن وجود دارد.

مثال: کلاس‌ تودرتو در برنامه نویسی کاتلین

class Outer {

    val a = "Outside Nested class."

    class Nested {
        val b = "Inside Nested class."
        fun callMe() = "Function call from inside Nested class."
    }
}

fun main(args: Array<String>) {
    // accessing member of Nested class
    println(Outer.Nested().b)

    // creating object of Nested class
    val nested = Outer.Nested()
    println(nested.callMe())
}

 

خروجی کد به شکل زیر می باشد؛

Inside Nested class.
Function call from inside Nested class.

 

 

کلاس تودرتو در کاتلین مشابه کلاس استاتیک تو در تو در جاوا است.

در جاوا، وقتی یک کلاس را درون کلاس دیگری اعلام می کنید ، به طور پیش فرض به یک کلاس داخلی تبدیل می شود. اما در کاتلین، برای ایجاد یک کلاس داخلی که در ادامه بحث خواهیم کرد، باید مادیفایر داخلی (inner modifier)  استفاده کنید.

 

کلاس داخلی در برنامه نویسی کاتلین

کلاس های تودرتو در کاتلین به وهله کلاس بیرونی دسترسی ندارند. به عنوان مثال،

class Outer {
    val foo = "Outside Nested class."

    class Nested {
        // Error! cannot access member of outer class.
        fun callMe() = foo
    }
}

fun main(args: Array<String>) {

    val outer = Outer()
    println(outer.Nested().callMe())
}

 

کد فوق کامپایل نخواهد شد زیرا ما سعی کردیم از داخل کلاس Nested به ویژگی foo کلاس Outer دسترسی پیدا کنیم.

برای حل این مسئله، باید کلاس تودرتو را با کلید واژه inner علامت گذاری کنید تا یک کلاس داخلی ایجاد کنید. کلاسهای داخلی اشاره و ارجاع به یک کلاس بیرونی دارند و می توانند به اعضای کلاس بیرونی دسترسی داشته باشند.

 

مثال: کلاس داخلی در برنامه نویسی کاتلین

class Outer {

    val a = "Outside Nested class."

    inner class Inner {
        fun callMe() = a
    }
}

fun main(args: Array<String>) {

    val outer = Outer()
    println("Using outer object: ${outer.Inner().callMe()}")

    val inner = Outer().Inner()
    println("Using inner object: ${inner.callMe()}")
}

 

خروجی کد به شکل زیر می باشد؛

Using outer object: Outside Nested class.
Using inner object: Outside Nested class.

 

 

منبع.

لیست جلسات قبل آموزش برنامه نویسی کاتلین

  1. معرفی کاتلین،  Kotlin Hello World – اولین برنامه کاتلین
  2. انواع متغیرهای پایه در کاتلین
  3. عملگرهای برنامه نویسی کاتلین
  4. تبدیل نوع در برنامه نویسی کاتلین
  5. عبارت ها، گزاره ها و بلوک ها در برنامه نویسی کاتلین
  6. کامنت ها در برنامه نویسی کاتلین
  7. ورودی / خروجی پایه در برنامه نویسی کاتلین
  8. عبارت if در برنامه نویسی کاتلین
  9. عبارت when در برنامه نویسی کاتلین
  10. حلقه های while و do … while در برنامه نویسی کاتلین
  11. حلقه for در برنامه نویسی کاتلین
  12. عبارت break در برنامه نویسی کاتلین
  13. عبارت continue در برنامه نویسی کاتلین
  14. توابع در برنامه نویسی کاتلین
  15. فراخوانی تابع میانوندی در برنامه نویسی کاتلین
  16. آرگومان ‌های پیش ‌فرضآرگومان ‌های پیش ‌فرض و نام ‌دار در برنامه نویسی کاتلین
  17. توابع بازگشتی در برنامه نویسی کاتلین
  18. کلاس و شی در برنامه نویسی کاتلین
  19. سازنده ها در برنامه نویسی کاتلین
  20. Getter ها و Setter ها در برنامه نویسی کاتلین
  21. وراثت در برنامه نویسی کاتلین 
  22. مادیفایرهای نمایانی در برنامه نویسی کاتلین
  23. کلاس مجرد در برنامه نویسی کاتلین
  24. اینترفیس های برنامه نویسی کاتلین

 

0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه