#چرا
💎 چرا در یک فایل جاوا ( .java ) فقط یک کلاس public میتونیم داشته باشیم؟
🔗 در مورد سطوح دسترسی از اینجا بخوانید
🟡 همونطور که میدونید داخل فایل جاوا میشه همزمان چند کلاس داشت ولی فقط یک کلاس سطح دسترسی پابلیک داره. برای مثال فایل X.java زیر را در نظر بگیرید:
——X.java——
public class X{ .... }
class Y { .... }
class Z { .... }
——————--
اما چرا باقی کلاس ها نباید دارای سطح دسترسی پابلیک باشند؟
🟢 Short Answer: Because It's the law! 😁
———
🟢 Long Answer:
اول از همه به اینصورت تعریف کردن کلاس ها باعث میشه سطح دسترسی کلاس ها فقط محدود به پکیجی بشه که داخلش قرار دارن (توی این مورد کلاس Y و Z) و اصطلاحا به این حالت package private گفته میشه.
⁉️ اما چرا همزمان دو کلاس پابلیک نمیتونه داخل یک کلاس باشه؟
فایل جاوا معمولا فایل همنام با کلاس پابلیک هستش و برای همین نمیشه یک فایل جاوا با دو اسم متفاوت رو داشت. در اصل زبان جاوا طوری طراحی شده که فقط یک کلاس پابلیک میتونه در هر فایل جاوا وجود داشته باشه. غیر از این باشه کمپایلر نمیتونه کلاس همنام رو تشخیص بده و به مشکل میخوره و برای همینه که بهتون خطا میده و میگه کلاس دوم حتما باید داخل فایل جداگانه تعریف بشه.
💬 پیشنهاد میشه کلاس هارو در فایل های جداگونه تعریف کنید مگر در موارد خاص. بخصوص در رابطه با اینکه کدتون خوانا تره.
#class #access_modifiers #public
———
☕️ @pieceJava
💎 چرا در یک فایل جاوا ( .java ) فقط یک کلاس public میتونیم داشته باشیم؟
🔗 در مورد سطوح دسترسی از اینجا بخوانید
🟡 همونطور که میدونید داخل فایل جاوا میشه همزمان چند کلاس داشت ولی فقط یک کلاس سطح دسترسی پابلیک داره. برای مثال فایل X.java زیر را در نظر بگیرید:
——X.java——
public class X{ .... }
class Y { .... }
class Z { .... }
——————--
اما چرا باقی کلاس ها نباید دارای سطح دسترسی پابلیک باشند؟
🟢 Short Answer: Because It's the law! 😁
———
🟢 Long Answer:
اول از همه به اینصورت تعریف کردن کلاس ها باعث میشه سطح دسترسی کلاس ها فقط محدود به پکیجی بشه که داخلش قرار دارن (توی این مورد کلاس Y و Z) و اصطلاحا به این حالت package private گفته میشه.
⁉️ اما چرا همزمان دو کلاس پابلیک نمیتونه داخل یک کلاس باشه؟
فایل جاوا معمولا فایل همنام با کلاس پابلیک هستش و برای همین نمیشه یک فایل جاوا با دو اسم متفاوت رو داشت. در اصل زبان جاوا طوری طراحی شده که فقط یک کلاس پابلیک میتونه در هر فایل جاوا وجود داشته باشه. غیر از این باشه کمپایلر نمیتونه کلاس همنام رو تشخیص بده و به مشکل میخوره و برای همینه که بهتون خطا میده و میگه کلاس دوم حتما باید داخل فایل جداگانه تعریف بشه.
💬 پیشنهاد میشه کلاس هارو در فایل های جداگونه تعریف کنید مگر در موارد خاص. بخصوص در رابطه با اینکه کدتون خوانا تره.
#class #access_modifiers #public
———
☕️ @pieceJava
Telegram
تیکه پاره های جاوا
💎 سطوح دسترسی در جاوا
🔆 سطوح دسترسی (access modifiers) برای تعیین کردن میزان دسترسی یک کلاس به فیلد ها یا متد های یک کلاس کاربرد دارد.
🔅 در جاوا چهار نوع سطح دسترسی داریم:
⭕️ سطح دسترسی default: این سطح دسترسی فقط به پکیج شامل کلاس محدود میشود و باقی کلاس…
🔆 سطوح دسترسی (access modifiers) برای تعیین کردن میزان دسترسی یک کلاس به فیلد ها یا متد های یک کلاس کاربرد دارد.
🔅 در جاوا چهار نوع سطح دسترسی داریم:
⭕️ سطح دسترسی default: این سطح دسترسی فقط به پکیج شامل کلاس محدود میشود و باقی کلاس…
👍7
💠 کلاس های تو در تو در جاوا
🕗زمان مطالعه: 1:30 دقیقه
🔆 یکی از ویژگی های زبان جاوا، تعریف کلاس ها بصورت تو در تو میباشد. در واقع این قابلیت به شما اجازه میدهد که کلاس های مرتبط به هم را دسته بندی کنید. یا به عبارتی کلاس هایی که فقط در کنار هم استفاده میشوند و استفاده خارجی ندارند (مثلا تعریف کلاس Node داخل کلاس LinkedList). این کار در واقع علاوه بر افزایش کارآمدی کد، به خوانایی کد نیز کمک میکند.
🔅 مزایای استفاده از کلاس های تو در تو:
- کلاس داخلی به اعضای کلاس خارجی نیز دسترسی دارد.
- کلاس داخلی میتواند پرایوت یا حتی استاتیک تعریف شود
- کلاس داخلی خود به گونه ای عضوی از کلاس خارجی است. پس بدون ایجاد نمونه از کلاس خارجی، نمیتوان به آن دست پیدا کرد:
class OuterClass
{
...
class NestedClass
{
...
}
}
🟡 برای نمونه سازی از کلاس داخلی، کافیست اول از کلاس خارجی نمونه ای ایجاد کنید:
OuterClass outer = new OuterClass();
و حالا از طریق نمونه outer اقدام به ایجاد نمونه از کلاس داخلی کنید:
OuterClass.InnerClass inner = o. new InnerClass();
همانطور که پیش تر اشاره کردیم، کلاس داخلی کاملا به کلاس خارجی متصل است. پس بدون ایجاد از نمونه خارجی نمیتوانید از کلاس داخلی هم نمونه ای ایجاد کنید.
🟡 اما درصورتی که کلاس داخلی استاتیک باشد، بدون اینکه نیاز به ساختن نمونه از کلاس خارجی باشد، میتوانید از کلاس داخلی نمونه خود را ایجاد کنید:
OuterClass.InnerClass staticInner = new OuterClass.InnerClass();
🔺 ضمنا کلاس استاتیک به راحتی به اعضای استاتیک کلاس خارجی دسترسی دارد اما برای دسترسی به باقی اعضا، حتما باید از کلاس خارجی در این کلاس یک نمونه ایجاد کنید.
🔰 مثال از کلاس های تو در تو:
class Car{
class Engine{
}
}
——-——
class LinkedList{
class Node{
}
}
———
#innerClasses #staticClasses #Class #nested #nestedClasses
〽️ @PieceJava
🕗زمان مطالعه: 1:30 دقیقه
🔆 یکی از ویژگی های زبان جاوا، تعریف کلاس ها بصورت تو در تو میباشد. در واقع این قابلیت به شما اجازه میدهد که کلاس های مرتبط به هم را دسته بندی کنید. یا به عبارتی کلاس هایی که فقط در کنار هم استفاده میشوند و استفاده خارجی ندارند (مثلا تعریف کلاس Node داخل کلاس LinkedList). این کار در واقع علاوه بر افزایش کارآمدی کد، به خوانایی کد نیز کمک میکند.
🔅 مزایای استفاده از کلاس های تو در تو:
- کلاس داخلی به اعضای کلاس خارجی نیز دسترسی دارد.
- کلاس داخلی میتواند پرایوت یا حتی استاتیک تعریف شود
- کلاس داخلی خود به گونه ای عضوی از کلاس خارجی است. پس بدون ایجاد نمونه از کلاس خارجی، نمیتوان به آن دست پیدا کرد:
class OuterClass
{
...
class NestedClass
{
...
}
}
🟡 برای نمونه سازی از کلاس داخلی، کافیست اول از کلاس خارجی نمونه ای ایجاد کنید:
OuterClass outer = new OuterClass();
و حالا از طریق نمونه outer اقدام به ایجاد نمونه از کلاس داخلی کنید:
OuterClass.InnerClass inner = o. new InnerClass();
همانطور که پیش تر اشاره کردیم، کلاس داخلی کاملا به کلاس خارجی متصل است. پس بدون ایجاد از نمونه خارجی نمیتوانید از کلاس داخلی هم نمونه ای ایجاد کنید.
🟡 اما درصورتی که کلاس داخلی استاتیک باشد، بدون اینکه نیاز به ساختن نمونه از کلاس خارجی باشد، میتوانید از کلاس داخلی نمونه خود را ایجاد کنید:
OuterClass.InnerClass staticInner = new OuterClass.InnerClass();
🔺 ضمنا کلاس استاتیک به راحتی به اعضای استاتیک کلاس خارجی دسترسی دارد اما برای دسترسی به باقی اعضا، حتما باید از کلاس خارجی در این کلاس یک نمونه ایجاد کنید.
🔰 مثال از کلاس های تو در تو:
class Car{
class Engine{
}
}
——-——
class LinkedList{
class Node{
}
}
———
#innerClasses #staticClasses #Class #nested #nestedClasses
〽️ @PieceJava
👍7❤1