اشیاء همراه
Kotlin Companion Object
قبل از توضیح اشیاء Companion در کاتلین به مثالی از نحوه دسترسی به اعضای یک کلاس نگاه کنیم. این مثال نشان میدهد که در حالت عادی چگونه به اعضای داخلی یک کلاس میتوانیم دسترسی داشته باشیم و در ادامه توضیح میدهیم که برای فرخوانی اعضای یک کلاس مثلا فرخوانی یک متد لزوماً نیازی به نمونهسازی از آن نیست. این کار را به کمک کلاسهای Companion انجام میدهیم. پس ابتدا ببینیم برای دسترسی به یک متد چه کاری لازم است انجام دهیم:
1 2 3 4 5 6 7 8 9 | class Person { fun callMe() = println("I'm called.") } fun main(args: Array<String>) { val p1 = Person() // calling callMe() method using object p1 p1.callMe() } |
اینجا از کلاس Person آبجکت p1 ساخته شده و روی آن متد ()callMe را فرخواندهایم. همه چیز به صورت عادی و نرمال کار میکند. ولی در کاتلین بدون ساخت شی و تنها با نام کلاس نیز میتوان به اعضای آن دسترسی داشت. برای این کار از کلیدواژه companion استفاده میشود به این صورت:
1 2 3 4 5 6 7 8 | class Person { companion object Test { fun callMe() = println("I'm called.") } } fun main(args: Array<String>) { Person.callMe() } |
خروجی:
1 | I'm called. |
در این برنامه، شی Test با کلیدواژه companion علامتگذاری شده است. بنابراین میتوانید با آوردن نام کلاس، متد ()callMe را فرخوانی کنید. نامگذاری شی companion اختیاری بوده و میتوانید حذفش کنید.
1 2 3 4 5 6 7 8 9 10 | class Person { // name of the companion object is omitted companion object { fun callMe() = println("I'm called.") } } fun main(args: Array<String>) { Person.callMe() } |
اگر با زبان جاوا آشنا باشید، احتمالاً فهمیدهاید که اشیاء companion معادل همان متدهای استاتیک در جاوا هستند (حتی با وجود تفاوت مکانیزم داخلی آنها). اشیاء companion میتوانند به اعضای خصوصی یک کلاس دسترسی داشته باشند. بنابراین میتوانید از آنها برای پیادهسازی الگوی طراحی factory استفاده کنید.
Kotlin Companion Object Kotlin Companion Object Kotlin Companion Object Kotlin Companion Object Kotlin Companion Object Kotlin Companion Object Kotlin Companion Object Kotlin Companion Object Kotlin Companion Object Kotlin Companion Object Kotlin Companion Object