کلاس چکیده در مقابل وراثت
کلاس Abstract و Inheritance دو مفهوم مهم شی گرا هستند که در بسیاری از زبان های برنامه نویسی شی گرا مانند جاوا یافت می شوند. کلاس Abstract را می توان به عنوان یک نسخه انتزاعی از یک کلاس معمولی (بتن) در نظر گرفت، در حالی که Inheritance به کلاس های جدید اجازه می دهد تا کلاس های دیگر را گسترش دهند. کلاس انتزاعی کلاسی است که نمی توان مقداردهی اولیه کرد اما می توان آن را گسترش داد. بنابراین، کلاس های Abstract تنها زمانی معنادار هستند که زبان برنامه نویسی از وراثت پشتیبانی کند. در جاوا، کلاس های Abstract با استفاده از کلمه کلیدی Abstract اعلام می شوند، در حالی که کلمه کلیدی Extends برای ارث بردن از یک کلاس (super) استفاده می شود.
کلاس انتزاعی چیست؟
معمولاً، کلاس های Abstract، که به عنوان کلاس های پایه Abstract (ABC) نیز شناخته می شوند، نمی توانند نمونه سازی شوند (نمونه ای از آن کلاس نمی تواند ایجاد شود). بنابراین، کلاس های Abstract تنها زمانی معنادار هستند که زبان برنامه نویسی از وراثت پشتیبانی کند (توانایی ایجاد کلاس های فرعی از گسترش یک کلاس). کلاس های انتزاعی معمولاً یک مفهوم یا موجودیت انتزاعی را با اجرای جزئی یا بدون اجرا نشان می دهند. بنابراین، کلاسهای Abstract بهعنوان کلاسهای والد عمل میکنند که کلاسهای فرزند از آنها مشتق میشوند تا کلاس فرزند، ویژگیهای ناقص کلاس والد را به اشتراک بگذارد و قابلیتهایی برای تکمیل آنها اضافه شود.
کلاس های Abstract ممکن است حاوی متدهای Abstract باشند. زیر کلاس هایی که یک کلاس انتزاعی را گسترش می دهند ممکن است این متدهای Abstract (ارثی) را پیاده سازی کنند. اگر کلاس فرزند تمام این متدهای Abstract را پیاده سازی کند، یک کلاس مشخص است. اما اگر اینطور نباشد، کلاس فرزند نیز به کلاس Abstract تبدیل می شود. معنی همه اینها این است که وقتی برنامه نویس کلاسی را به عنوان Abstract معرفی می کند، می گوید که کلاس ناقص خواهد بود و دارای عناصری است که باید توسط زیر کلاس های ارثی تکمیل شوند.این یک راه خوب برای ایجاد قرارداد بین دو برنامه نویس است که کار در توسعه نرم افزار را ساده می کند. برنامه نویسی که برای ارث بردن کد می نویسد، باید دقیقاً از تعاریف روش پیروی کند (اما البته می تواند پیاده سازی خود را داشته باشد).
ارث چیست؟
وراثت یک مفهوم شی گرا است که به کلاس های جدید اجازه می دهد کلاس های دیگر را گسترش دهند. کلمه کلیدی Extends برای پیاده سازی مفهوم وراثت در زبان برنامه نویسی جاوا استفاده می شود. وراثت اساسا استفاده مجدد از کد را با اجازه دادن به گسترش خواص و رفتار یک کلاس موجود توسط یک کلاس جدید ارائه می کند. هنگامی که یک زیر کلاس جدید (یا کلاس مشتق شده) یک کلاس فوق العاده (یا کلاس والد) را گسترش می دهد، آن زیر کلاس تمام ویژگی ها و متدهای کلاس فوق را به ارث می برد. کلاس فرعی می تواند به صورت اختیاری رفتاری را که از کلاس والد به ارث رسیده است را لغو کند (عملکردی جدید یا توسعه یافته برای متدها ارائه کند). به طور معمول، یک زیر کلاس نمی تواند چندین کلاس فوق العاده را گسترش دهد (مثلاً در جاوا).بنابراین، نمیتوانید از extension برای ارث چندگانه استفاده کنید. برای اینکه چندین وراثت داشته باشید، باید از رابط ها استفاده کنید.
تفاوت بین کلاس Abstract و Inheritance چیست؟
کلاس های انتزاعی معمولاً یک مفهوم انتزاعی یا یک موجودیت را با اجرای جزئی یا بدون اجرا نشان می دهند. وراثت به کلاس های جدید اجازه می دهد تا کلاس های دیگر را گسترش دهند. از آنجا که کلاس های Abstract نمی توانند نمونه سازی شوند، برای استفاده از کلاس های Abstract باید از مفهوم وراثت استفاده کنید. در غیر این صورت، کلاس Abstract هیچ کاربردی ندارد. کلاسهای انتزاعی ممکن است حاوی متدهای Abstract باشند و وقتی کلاس گسترش مییابد، همه متدها (Abstract و konkret) به ارث میرسند. کلاس ارثی می تواند یک یا همه متدها را پیاده سازی کند. اگر همه متدهای Abstract پیاده سازی نشوند، آن کلاس نیز به یک کلاس Abstract تبدیل می شود. یک کلاس نمی تواند از بیش از یک کلاس Abstract ارث ببرد (این به خودی خود کیفیت کلاس های Abstract نیست، بلکه محدودیتی در وراثت است).
پست های مرتبط:
تفاوت بین کلاس انتزاعی و کلاس بتن
تفاوت بین مجازی و چکیده
تفاوت بین کلاس Abstract و Interface
تفاوت بین پیادهسازی و بسط
تفاوت بین نمودار و درخت
بایگانی شده تحت: برنامه نویسی با برچسب: ABC, abstract, Abstract Base Class, Abstract class, Abstract class, Abstract keyword, Abstract method, class konkret, Extends keyword, inheritance, inheritance class, inherited class, Java, multiple inheritance ، مفاهیم شی گرا، کلاس معمولی، کلاس فوق العاده
درباره نویسنده: Indika
Indika، BSc. Eng، MSECE Computer Engineering، PhD. علوم کامپیوتر، استادیار است و دارای علایق تحقیقاتی در زمینههای بیوانفورماتیک، زیستشناسی محاسباتی، و پردازش زبان طبیعی زیست پزشکی است.
نظر
-
جیسون می گوید
30 اوت 2017 ساعت 1:25 بعد از ظهر
متشکرم که تفاوت را توضیح دادید. تمام سوالات من با این حل شد.
پاسخ
-
Aus می گوید
10 مه 2019 ساعت 3:04 بعد از ظهر
بهترین پاسخ در وب، معلم هیچ توضیحی نمی دهد و منطقی نیست، یکنواخت mf. اینگونه مفاهیم را توضیح می دهید.
پاسخ
پاسخ بگذارید لغو پاسخ
آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی باعلامت گذاری شده اند
نظر
نام
ایمیل
وب سایت