فصل6_ بخش دهم:شی همراه (Companion Object)
باید توجه داشته باشید در هر کلاس یک شی همراه بیشتر نمی توان داشت .
شی همراه بیشترین کاربرد آن در استفاده از field injection است بنابراین بهتر است فانکشن های خود را در یک فایل جداگانه بنویسیم و سپس به تعداد فانکشن ها variable یا همان field تعریف کنیم و مساوی با هریک از فانکشن ها قرار دهیم .
بدین صورت پارامتر ورودی را در همان جا (در شی همراه موجود در کلاس مربوطه )تعریف می کنیم و هنگام صدا زدن شی همراه درفایل main.kt از کلاس object نمی سازیم و مستقیما خود شی همراه و سپس آن field را صدا می زنیم .
در این روش بدون اینکه از سطوح دسترسی استفاده کرده باشیم (همان اصول Encapsulation) فایل اصلی مان (main .kt) هیچ دخالتی در مقدار دهی به فانکشن ها ندارد .
در صورتی که بخواهیم در فایلmain.kt برای فانکشن ها مقداردهی انجام دهیم می بایست اصل فانکشن یا خلاصه شده آن را در شی همراه بیاوریم .
نکته :می توان برای شی همراه نام گذاری انجام دهیم و این حالت در استفاده از کلاس های تو در تو و داخلی کاربرد دارد .
لطفا به شکل های زیر برای درک بیشتر آنچه توضیح داده شد توجه کنید :
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''