PDA

View Full Version : سوال: تفاوت متدهای static و غیر static



mehrdad85
یک شنبه 09 مرداد 1390, 12:02 عصر
سلام

دوستان ممنون میشم توضیح بدید که فرق بین متد های staticو غیر static چی هستش؟


داخل هر کدوم از این متد ها میشه چکار کرد که داخل دیگری نمیشه؟
مرسی

barnamenevisjma
یک شنبه 09 مرداد 1390, 13:05 عصر
یک متد استاتیک نیازی به نمونه ای از شی نداره.
(مثلا خیلی از متدهای کلاس Console بصورت استاتیک پیاده سازی شدن. Write, ReadLine و ... ). شما بدون اینکه از کلاس Console نمونه بسازید، میتونید از متد های استاتیکش استفاده کنید.
متد های استاتیک به هیچ نمونه خاصی تعلق ندارن و بین همه مشترکن. یکی از نتایج این نکته، اینه که تو یه متد استاتیک:


نمیشه از کلمه کلیدی this استفاده کرد.(کار بی خودیه!)
دسترسی به سایر متد ها و فیلد های غیر استاتیک اون کلاس هم غیر ممکنه.

موفق باشید.

quantomquery
یک شنبه 09 مرداد 1390, 14:39 عصر
سلام
یه مثال میزنم
میخواهیم یه شهرک با 100 ساختمون با متراژ 300 متر بسازیم .پس میریم پیش مهندس میگیم یه نقشه ساختمون برام بکش که 300 متر متراژ داشته باشه و لی لوله بخاری ها رو جوری بکش که بشه مشتری انتخاب کنه که باشه یا حذف بشه
توجه کنید :
متراژ برای همه خونه ها یکسانه
لوله بخاری یکسان نیست و میتونه باشه یا نه

حالا در نظر بگیرید :
متراژ = متغیر استاتیکه
بودن لوله بخاری = متغیر غیر استاتیک
نقشه = کلاس برنامه
خونه = نمونه ای از کلاس برنامه

خب یه نمونه از کلاس میسازیم = یعنی میریم به بنا می گیم یه خونه از این نقشه بساز
بنا نگاه به متراژ نقشه می کنه می گه متراژ نقشه300 متره و بعد بهت میگه میخواهی خونه لوله بخاری داشته باشه یا نه --------> ببین چی شد گفت متراژ نقشه یا لوله خونه پس متراژ به نقشه یا کلاس وابسته شد ولی لوله بخاری به خونه یا نمونه ای از کلاس - نه خود کلاس
این یعنی شما اول متغیر کلاس که اسمش متراژ هست رو مقدار دهی می کنی و بعد که یه نمونه یا 100 نمونه ازش ساختی به تک تک نمونه ها اعلام میکنی با لوله بخاری یا بدون لوله
(رفتم تو نخ لوله بخاری)

اگه کلاس نقشه داشتی



naghshe.metraj=300;
// حالا یه نمونه خونه ازش بساز
naghshe khone=new naghshe();
// حالا از متغیر غیر استاتیک استفاده کن
khone.havelole=true;




توجه کن که استاتیک روی کلاس کار کردی ولی غیر استاتیک روی نمونه

(مثالش فک کنم باحال شد نه ؟)

barnamenevisjma
یک شنبه 09 مرداد 1390, 18:58 عصر
عجب مثالی شد!!!

helia_f
جمعه 16 شهریور 1397, 10:45 صبح
عالیییییییییییییییییییییی یییییییی بووود:تشویق::تشویق::تشویق::ت ویق:

ali_md110
جمعه 16 شهریور 1397, 21:57 عصر
تاپیک زیر خاکیه از خاک اوردینش بیرون
ولی
تا جاییکه امکان دارد از کلاسهای استاتیک استفاده نکنید
کلاسهای استاتیک را بیشتر برای توابع عمومی و ثابت استفاده کنید مثلا کلاسی برای برگرداندن متدهای تاریخ شمسی
کلاسهایی که از data استفاده میکند یا کلاسهایی که دارای توابع ef هستند بصورت استاتیک بکار نبرید
گزینه مناسب تر بکارگیری interfaceها هست

cmsdqq2
یک شنبه 18 شهریور 1397, 00:41 صبح
تاپیک زیر خاکیه از خاک اوردینش بیرون
ولی
تا جاییکه امکان دارد از کلاسهای استاتیک استفاده نکنید
کلاسهای استاتیک را بیشتر برای توابع عمومی و ثابت استفاده کنید مثلا کلاسی برای برگرداندن متدهای تاریخ شمسی
کلاسهایی که از data استفاده میکند یا کلاسهایی که دارای توابع ef هستند بصورت استاتیک بکار نبرید
گزینه مناسب تر بکارگیری interfaceها هست


چه تفاوتی بین روش های معمول و استفاده از interface وجود داره؟ ممنونم :لبخندساده: