تفاوت بین Overriding و Overloading

تفاوت بین Overriding و Overloading
تفاوت بین Overriding و Overloading

تصویری: تفاوت بین Overriding و Overloading

تصویری: تفاوت بین Overriding و Overloading
تصویری: along, across, around & through | Are you confused ? 2024, نوامبر
Anonim

Overriding در مقابل Overloading

روش Overriding و روش Overloading دو مفهوم/تکنیک/ویژگی هستند که در برخی از زبان های برنامه نویسی یافت می شوند. هر دو مفهوم به برنامه نویس اجازه می دهد تا پیاده سازی های متفاوتی را برای روش هایی با نام یکسان ارائه دهد. نادیده گرفتن روش به برنامه نویس اجازه می دهد تا یک پیاده سازی جایگزین را در یک زیر کلاس به روشی که قبلاً در کلاس فوق تعریف شده است ارائه دهد. بارگذاری بیش از حد روش به برنامه نویس اجازه می دهد تا پیاده سازی های مختلفی را برای چندین روش با نام یکسان (در یک کلاس) ارائه دهد.

Overriding چیست؟

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

بارگیری بیش از حد چیست؟

بارگذاری روش یک ویژگی است که توسط برخی از زبان های برنامه نویسی برای ایجاد بیش از یک روش با نام مشابه، اما با انواع ورودی و خروجی متفاوت ارائه می شود. در زبان های برنامه نویسی مدرن مانند جاوا، سی شارپ، سی پلاس پلاس و VB. NET این ویژگی در دسترس است. می‌توانید با ایجاد روش دیگری با نام مشابه، اما با امضای متد متفاوت یا نوع بازگشتی متفاوت (یا هر دو) یک متد را اضافه بار کنید. به عنوان مثال، اگر متد 1 (نوع 1 t1) و متد 1 (نوع 2 t2) را در داخل یک کلاس داشته باشید، آنها بیش از حد بارگذاری می شوند. سپس سیستم باید تصمیم بگیرد که در هنگام فراخوانی کدام یک اجرا شود. این تمایز با مشاهده نوع پارامتر(های) وارد شده به روش انجام می شود. اگر آرگومان از نوع 1 باشد، پیاده سازی اول فراخوانی می شود، در حالی که اگر از نوع 2 باشد، اجرای دوم فراخوانی می شود.

تفاوت بین Overriding و Overloading چیست؟

اگرچه برای ارائه روشی با پیاده‌سازی‌های متفاوت، از overriding روش و overloading استفاده می‌شود، اما تفاوت‌های کلیدی بین این دو مفهوم/تکنیک وجود دارد.اول از همه، موضوعات overriding متد همیشه در کلاس های مختلف باقی می مانند، در حالی که موضوعات overloading در یک کلاس باقی می مانند. این بدان معناست که overriding فقط در زبان های برنامه نویسی شی گرا امکان پذیر است که به ارث بردن اجازه می دهد، در حالی که اضافه بار می تواند در یک زبان غیر شی گرا نیز در دسترس باشد. به عبارت دیگر، شما یک متد را در کلاس فوق‌العاده لغو می‌کنید، اما یک متد را در کلاس خود بارگذاری می‌کنید.

تفاوت دیگر این است که متدهای لغو شده نام متد، امضای متد و نوع بازگشتی یکسان دارند، اما متدهای بارگذاری شده باید در نوع امضا یا نوع برگشتی متفاوت باشند (نام باید یکسان باشد). به منظور تمایز بین دو روش overrid شده، نوع دقیق شی مورد استفاده برای فراخوانی متدهای id مورد استفاده قرار می گیرد، در حالی که برای تمایز بین دو روش overload شده از انواع پارامترها استفاده می شود. تفاوت اصلی دیگر این است که اضافه بار در زمان کامپایل حل می شود، در حالی که overriding در زمان اجرا حل می شود.

توصیه شده: