PDA

View Full Version : ایجاد متد به صورت static یا instance؟



shekoofeh
یک شنبه 24 آذر 1387, 09:39 صبح
سلام.
می خواستم بدونم چه موقع باید یک متد رو در یک کلاس به صورت static تعریف کنیم و چه موقع به صورت instance؟

ممنون.

fa_te64
یک شنبه 24 آذر 1387, 10:57 صبح
وقتي متد رو به صورتinstance تعريف ميكنيد يعني به ازاي هر نمونه اي از آن كلاس كه New ميكنيد يك نمونه از آن متد هم ساخته ميشود ولي وقتي به صورت static تعريف كنيد به ازاي نمونه هاي مختلف از ان كلاس فقط همان متد وجود دارد،بسته به كاربرد ميتوان static یا instance تعريف كرد.اگر به صورت static تعريف كنيد متغيرهاي متد بايد static باشند

shekoofeh
یک شنبه 24 آذر 1387, 11:21 صبح
دوست عزیز. این مطالب رو بنده می دونستم. این "بسته به کاربرد" رو برای بنده تفسیر بفرمایید.

ar.shirazi
یک شنبه 24 آذر 1387, 12:13 عصر
سلام.
می خواستم بدونم چه موقع باید یک متد رو در یک کلاس به صورت static تعریف کنیم و چه موقع به صورت instance؟

ممنون.
زمانی که میخواهید یک فیلد را بین چند شیء مختلف به اشتراک بگذارید ==> static
زمانی که میخواهید یک فیلد برای هر شیء منحصر به فرد بوده و داده اختصاصی خودش را داشته باشد ==> instant

shekoofeh
یک شنبه 24 آذر 1387, 23:19 عصر
فرض کنید کلاسی داریم با عنوان Customer. اگر من متدی با نام AddCustomer رو یا به صورت static و یا به صورت instance تعریف کنم کنم، در هر دو حالت چه فرقی میکنه؟ آیا تنها فرق اینه که در حالت static نیاز به new کردن از کلاس Customer نیست؟ فرق دیگه ای از هر لحاظ وجود نداره؟ اگر فرقی وجود نداره پس چه موقع یک متد باید static و چه موقع باید instance باشه؟

ممنون.

Amir Oveisi
سه شنبه 26 آذر 1387, 11:14 صبح
متد AddCustomer کجاست؟ تو کلاس Customer؟

shekoofeh
سه شنبه 26 آذر 1387, 12:47 عصر
بله. در کلاس Customer هست.

ar.shirazi
سه شنبه 26 آذر 1387, 23:19 عصر
فرض کنید کلاسی داریم با عنوان Customer. اگر من متدی با نام AddCustomer رو یا به صورت static و یا به صورت instance تعریف کنم کنم، در هر دو حالت چه فرقی میکنه؟ آیا تنها فرق اینه که در حالت static نیاز به new کردن از کلاس Customer نیست؟ فرق دیگه ای از هر لحاظ وجود نداره؟ اگر فرقی وجود نداره پس چه موقع یک متد باید static و چه موقع باید instance باشه؟

ممنون.
درست یک پست قبل جواب سوالتان را داده ام:


زمانی که میخواهید یک فیلد را بین چند شیء مختلف به اشتراک بگذارید ==> static
زمانی که میخواهید یک فیلد برای هر شیء منحصر به فرد بوده و داده اختصاصی خودش را داشته باشد ==> instant



اگر AddCustomer به صورت استاتیک باشد همه اشیاء میتوانند از آن استفاده کنند اما اگر instant باشد، هر شیء متد خودش را خواهد داشت و اشیاء دیگر به آن دسترسی نخواهند داشت