صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

کلاس abstract

کلاسهای abstract  یکی از ابزارهای مهم  شی گرایی است .کلاسهایی که نمی توان از آنها متغیری ساخت . و بصورت کلی دارای ساختار زیر هستند .

Abstract class  classname

{

بدنه کلاس

}

اما کلاس abstract چگونه است ؟

 

1-یک کلاس abstract  شبیه یک کلاس معمولی است . متد ، فیلد و خصوصیت دارد با این تفاوت که نمی توانیم از آن نمونه سازی کنیم ، به عبارتی نمی توانیم متغیری از نوع کلاس abstract  تعریف کرد .

 

2-یک کلاس abstract   شبیه یک اینترفیس است ، اما با دیدی وسیعتر (مفصلا توضیح خواهم داد )

 

3 -یک کلاس abstract  می تواند دارای متدهای abstract باشد که شبیه اینترفیس فقط اعلام می شوند و باید در زیر کلاسها بازنویسی شوند و جزییات آنها نوشته شود .

abstract class Location

    {

public abstract Location(string name);

{        

 

اگر دقت کنیم ، کلاس  abstract    حالتی بین کلاس معمولی و یک Interface  است . که برای فهم کامل آن باید مقایسه ای با  Interface  انجام دهیم تا تفاوت این دو بیشتر برای ما مشخص شود .

 

1-یک کلاس معمولی فقط می تواند از یک کلاس abstract ارث بری کند . در حالی که همان کلاس معمولی می تواند از چندین  Interface  ارث بری کند ( وراثت چند گانه )

 

2-یک Interface  فقط می تواند اعلان متدها و خصوصیتها را داشته باشد اما یک کلاس abstract علاوه بر انها می تواند متدها و خصوصیتهایی با کدهای کامل داشته باشد .

مثال :

 

abstract class Location

    {

        public Location(string name)

        {

            this.name = name;

        }

 

        public Location[] Exits;

 

        private string name;

        public string Name

        {

            get { return name; }

        }

}

3-عناصر یعنی متدها و خصوصیتها و .. در کلاس  abstract می توانند همانند یک کلاس معمولی دارای سطح دسترسی باشند . بر خلاف Interface

 

4-وقتی شما متدی را به کلاس abstract اضافه می کنید در صورتی که متد شما از نوع abstract نباشد ، اتوماتیک به تمام زیر کلاسها اعمال می شود ، اما در Interface  اگر متدی اضافه کنید باید در تمام زیر کلاسها آن را اعمال کنید و جزییات آن را مشخص کنید .

 

5-کلاسهای abstract مانند یک کلاس معمولی می توانند فیلد و عناصر داشته باشند در حالی که Interface  فاقد این خصوصیت است .

 

 

نظرات 1 + ارسال نظر
فرزا م فر دوشنبه 23 اسفند‌ماه سال 1389 ساعت 08:23 ب.ظ

سلام مرسی ازین اطلاعاتی که اینجا در اختیار همه گذاشتین

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد