کلاس در مقابل وراثت
 

کلاس چکیده و وراثت دو مفهوم مهم شی گرا هستند که در بسیاری از زبان های برنامه نویسی شی گرا مانند جاوا یافت می شوند. کلاس انتزاعی را می توان به عنوان یک نسخه انتزاعی از یک کلاس معمولی (بتونی) در نظر گرفت ، در حالی که ارثی بودن اجازه می دهد تا کلاسهای جدید کلاسهای دیگر را گسترش دهند. کلاس چکیده کلاس است که امکان تنظیم اولیه ندارد اما قابل تمدید است. بنابراین ، اگر زبان برنامه نویسی از ارث حمایت می کند ، کلاس های چکیده فقط معنی دارند. در جاوا کلاسهای Abstract با استفاده از کلمه کلیدی چک اعلان می شود ، در حالی که کلمه کلیدی Extens برای وراثت از یک کلاس (فوق العاده) استفاده می شود.

کلاس چکیده چیست؟

به طور معمول ، کلاسهای چکیده ، همچنین به عنوان کلاسهای پایه انتزاعی (ABC) شناخته می شوند ، نمی توانند از طریق مسنجر (نمونه ای از آن کلاس ایجاد نشوند). بنابراین ، کلاس های چکیده فقط معنی دارند که اگر زبان برنامه نویسی از ارث پشتیبانی می کند (توانایی ایجاد زیر کلاس از گسترش یک کلاس). کلاسهای انتزاعی معمولاً مفهوم انتزاعی یا موجودی را با اجرای جزئی یا بدون اجرا نشان می دهند. بنابراین کلاسهای چکیده به عنوان کلاسهای والدین عمل می کنند که کلاسهای کودک از آنها مشتق می شود به طوری که کلاس کودک ویژگیهای ناقص کلاس والدین را به اشتراک می گذارد و می توان عملکرد آنها را برای تکمیل آنها اضافه کرد.

کلاسهای چکیده ممکن است شامل روشهای چکیده باشد. کلاسهای فرعی که یک کلاس انتزاعی را گسترش می دهند ممکن است این روشهای انتزاعی (ارثی) را پیاده سازی کنند. اگر کلاس کودک تمام این روشهای چکیده را اجرا کند ، یک کلاس بتونی است. اما اگر اینطور نشود ، کلاس کودک نیز به کلاس انتزاعی تبدیل می شود. معنی این همه این است که وقتی برنامه نویس یک کلاس را به عنوان چکیده معرفی می کند ، او می گوید که این کلاس ناقص خواهد بود و دارای عناصری خواهد بود که باید توسط زیر کلاس های ارثی تکمیل شوند. این یک روش خوب برای ایجاد قرارداد بین دو برنامه نویس است که کارها را در توسعه نرم افزار ساده می کند. برنامه نویس ، که می نویسد کد را به ارث ببرد ، باید تعاریف روش را دقیقاً دنبال کند (اما البته می تواند اجرای خودش را داشته باشد).

وراثت چیست؟

وراثت یک مفهوم گرا است که به کلاسهای جدید امکان می دهد کلاسهای دیگر را گسترش دهند. کلید واژه Extensions برای پیاده سازی مفهوم وراثت به زبان برنامه نویسی جاوا استفاده می شود. وراثت در اصل امکان استفاده مجدد از کد را با اجازه دادن به گسترش ویژگی ها و رفتار یک کلاس موجود توسط یک کلاس تازه تعریف شده فراهم می کند. هنگامی که یک زیر کلاس جدید (یا کلاس مشتق شده) کلاس فوق العاده (یا کلاس والدین) را گسترش می دهد ، آن زیر کلاس تمام ویژگی ها و روش های کلاس فوق العاده را به ارث می برد. زیر کلاس می تواند به صورت اختیاری رفتار را نادیده بگیرد (عملکرد جدید یا گسترده ای را به روش ها ارائه دهد) که از کلاس والدین به ارث رسیده است. به طور معمول ، یک زیر کلاس نمی تواند چندین کلاس فوق العاده (به عنوان مثال در جاوا) را گسترش دهد. بنابراین ، شما نمی توانید از پسوندها برای وراثت چندگانه استفاده کنید. برای اینکه میراث چندگانه ای داشته باشید ، باید از رابط ها استفاده کنید.

تفاوت خلاصه کلاس با وراثت چیست؟

کلاسهای انتزاعی معمولاً یک مفهوم انتزاعی یا موجودی را با اجرای جزئی یا بدون اجرا نشان می دهند. وراثت به کلاسهای جدید اجازه می دهد کلاسهای دیگر را گسترش دهند. از آنجا که ، کلاس های چکیده نمی تواند از طریق مسنجر انجام شود ، برای استفاده از طبقات چکیده باید از مفهوم وراثت استفاده کنید. در غیر این صورت ، یک کلاس Abstract فایده ای ندارد. کلاس های چکیده ممکن است شامل روش های چکیده باشد و وقتی کلاس تمدید شود ، تمام روش ها (چکیده و بتن) به ارث می رسند. کلاس ارثی می تواند هر یا تمام روش ها را پیاده سازی کند. اگر تمام روش های Abstract انجام نشده باشد ، آن کلاس نیز به یک کلاس Abstract تبدیل می شود. یک کلاس نمی تواند از بیش از یک کلاس چکیده به ارث برسد (این یک کلاس از کلاس های چکیده به خودی خود نیست ، بلکه محدودیت وراثت است).