Android developer
کلاس Nested در مقایسه با کلاس Inner در کاتلین
![](https://files.virgool.io/upload/users/472315/posts/w7z70piiisfi/mghkstphcumx.jpg)
در کاتلین، یک کلاس nested کلاسی است که در کلاس دیگری تعریف شده است. این راهی برای سازماندهی و کپسوله کردن کدها در محدوده یک کلاس دیگر است.در کاتلین، کلاس nested به طور پیش فرض ثابت یا همان static است، بنابراین data Member و member function آن را میتوان بدون ایجاد یک شی از کلاس دسترسی داشت. کلاس nested نمی تواند به member function های کلاس بیرونی (outer class) دسترسی داشته باشد.
کلاس بیرونی (Outer): کلاس Outer
کلاسی است که کلاس nested درون آن تعریف شده است. پس در ادامه هرجا کلاس بیرونی را در این زمینه دیدید به معنی گفته شده اشاره دارد.
معنی nested = تودرتو، که میشه کلاس تودرتو
در کاتلین، کلاس inner کلاسی است که با کلمه کلیدی inner مشخص شده و در کلاس دیگری اعلان می شود. ویژگی کلیدی یک کلاس inner این است که به اعضای کلاس بیرونی خود دسترسی دارد و به نمونه ای یا همان instance از کلاس بیرونی (outer class) اشاره دارد.
تعریف کلاس outer: کلاس Outer
کلاسی است که کلاس inner درون آن تعریف شده است.. پس در ادامه هرجا کلاس بیرونی را در این زمینه دیدید به معنی گفته شده اشاره دارد.
معنی inner = داخلی، که میشه کلاس داخلی
تفاوت بین کلاس های nested و کلاس های inner در کاتلین:
1. دسترسی به اعضای کلاس بیرونی:
- کلاس nested: به طور پیش فرض نمی توان به اعضای کلاس بیرونی دسترسی داشت. شبیه به کلاس static nested در جاوا عمل می کند.
- کلاس Inner : می تواند به اعضای کلاس بیرونی (outer class) دسترسی داشته باشد، زیرا به نمونه ای از کلاس بیرونی (outer class) اشاره دارد.
![](https://files.virgool.io/upload/users/472315/posts/w7z70piiisfi/lzavdqtspebj.png)
2. ثابت در مقایسه با غیرثابت :
- کلاس nested: به طور پیش فرض، به عنوان یک کلاس ثابت (static class) عمل می کند، به این معنی که مرجعی به نمونه ای از کلاس بیرونی (outer class) ندارد.
- کلاس Inner: غیر ثابت. ارجاع ضمنی(implicit reference) به نمونه ای از کلاس بیرونی ( outer class) دارد.
![](https://files.virgool.io/upload/users/472315/posts/w7z70piiisfi/rn03bhdwyswk.png)
3. قابلیت Visibility Modifiers :
- کلاس nested: می تواند هر گونه Visibility Modifier (مثل public, private و غیره) از جمله private بودن برای کلاس بیرونی داشته باشد.
- کلاس Inner : نمی توان Visibility Modifier غیر از final داشت. visibility توسط کلاس بیرونی تعیین می شود.
![](https://files.virgool.io/upload/users/472315/posts/w7z70piiisfi/m2wvfurpr4wy.png)
4. ایجاد نمونه(Instances):
- کلاس nested: می تواند بدون نمونه ای از کلاس بیرونی نمونه سازی شود.
- کلاس Inner: برای ایجاد یک نمونه از کلاس بیرونی نیاز دارد.
![](https://files.virgool.io/upload/users/472315/posts/w7z70piiisfi/msmigr5xkjik.png)
5. سینتکس(Syntax):
- کلاس nested : بدون کلمه کلیدی Inner تعریف می شود.
- کلاس Inner: با کلمه کلیدی Inner تعریف می شود.
![](https://files.virgool.io/upload/users/472315/posts/w7z70piiisfi/cbxp57tmdpe6.png)
در این پست، کلاسهای Nested و Inner در کاتلین را مقایسه کردیم و تفاوتهای کلیدی آنها را توضیح دادیم امیدوارم براتون مفید بوده باشه.
ممنون که تا آخر این پست همراه من بودید ، امیدوارم براتون مفید بوده باشه 🙌🙏✌ (:
بقیه آموزش های mister developer را می توانید در تلگرام و اینستاگرام دنبال کنید!!
کانال تلگرام: mister_developerr
اینستاگرام: mister_developerr
موفق و پیروز باشید
مطلبی دیگر از این انتشارات
خداحافظی با هزینههای سنگین! رقیبی قدرتمند برای کوپایلوت
مطلبی دیگر از این انتشارات
استعداد برنامه نویسی چیست؟
مطلبی دیگر از این انتشارات
دل نوشته :: کار :: رشته کامپیوتر