لطفا توضیح بدید چه تفاوتی بین کلاس های از نوع static و abstract وجود داره ؟ چگونه باید بفهمیم که کلاس static یا abstract ایجاد کنیم ؟
public static class MyClass
{
...
}
//
public abstract class MyClass1
{
...
}
کلاس های static در سی شارپ برای نگهداری مقادیر ثابت در برنامه هستند و شما نمی توانید از آنها نمونه سازی کنید(مثلا نگهداری کانکشن استرینگ). از این کلاسها برای تعریف متغیرها و متدهایی که هیچ روش خاصی ندارند و کاملا ثابت هستند استفاده می شود. همچنین در کلاسهای static می توانید متدها یا توابع ثابت را تعریف کنید. به طور واضح تر در static کلاسها می توانید Extenssion method ها را تعریف کنید. (متدهایی که یک قابلیت را به پروژه شما اضافه می کند. مثلا تابع کنترل کاراکترهای عربی و فارسی یا تابعی که null بودن مقادیر را کنترل کند یا ...)
کلاس های abstract برای ارث بری سایر کلاسها تعریف و استفاده می شوند. مثلا فرض کنید متغیری دارید که در اکثر کلاسهای دیگر مورد استفاده می باشد. می توانید این متغیر را در یک کلاس abstract تعریف کنید و سایر کلاسها از کلاس abstract شما ارث بری کنند. به عنوان مثال :
public abstract class myDate
{
public createDate DateTime {get; set;}
}
public class User : myDate
{
public string FirstName {get; set;}
public string Address {get; set;}
}
در مثال بالا کلاس User علاوه بر 2 فیلد FirstName و Address شامل فیلد CreateDate نیز می شود.
با درود کلاس های استاتیک همونطور که از نامشون مشخص هست ثابت هستند و با صدا زدن کلاس در دسترس هستند و نیازی به نمونه سازی نداشته و فقط یک مقدار میگیرن
کلاس abstract از مفاهیم مهم شی گرایی هست و به زبان ساده کلاس abstract ها مثل اینترفیس ها هستند با این تفاوت که میتونن بدنه هم داشته باشند کلمه abstract در کلاس باعث اضافه شدن قوانینی به کلاس میشه مثلاً از کلاس که abstract هست نمیتونی نمونه سازی کنید و فقط کلاس پدر هستند و باید از اونها ارث بری بشن
برای اینکه بهتر متوجه شد یک مثال رو براتون میزنم
یک کلاس abstract تعریف میکنیم که مثلاً کار ترمز کردن در موتور سیکلت رو انجام میده ما می دانیم که ترمز چه کاری انجام می دهد. وقتی ترمز می کنیم موتور می ایستد. با این حال، کار ترمز از ما پنهان نگه داشته می شود.مزیت اصلی پنهان کردن کار ترمز این است که اکنون سازنده میتواند ترمزها را برای موتورهای مختلف به طور متفاوت اجرا کند با این حال آنچه ترمز انجام میدهد یکسان خواهد بود
بعد از تعریف کردن کلاس abstract در کلاس های دیگر از اون ارث بری میکنیم.
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
349
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
318
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4268
- پاسخ :
1
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
660
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3172
- پاسخ :
2
|
تاریخ :
1398/09/08
- ساعت :
11:38:00 PM
- بازدید :
3251
- پاسخ :
1
|
تاریخ :
1403/04/12
- ساعت :
07:27:00 PM
- بازدید :
658
- پاسخ :
0
|
تاریخ :
1403/01/29
- ساعت :
08:08:00 AM
- بازدید :
687
- پاسخ :
4
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2006
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
74
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
108
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
428
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4797
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|