Ключова разлика – Замяна срещу претоварване в C
Ключовата разлика между замяната и претоварването в C е, че обвързването на извикването на пренатоварен метод към неговата дефиниция се случва по време на изпълнение, докато обвързването на извикването на пренатоварен метод към неговата дефиниция се случва по време на компилиране.
C е език за програмиране с общо предназначение, разработен от Microsoft. Основното предимство на C е, че поддържа обектно ориентирано програмиране (OOP). Един стълб на ООП е полиморфизмът. Той дава на обекта множество поведения. Има два типа в полиморфизма, известни като отмяна и претоварване. Тази статия обсъжда разликата между отмяната на метода и претоварването в C.
Какво е Overriding в C?
Има още една важна концепция в ООП е наследяването. Това е да се използват атрибути и методи на вече съществуващ клас. Подобрява повторното използване на кода. Вече съществуващият клас е базовият клас, а новият клас е известен като производен клас. При отмяна на полиморфизма трябва да има базов клас и производен клас. Свързването на извикването на заменен метод към дефиницията се случва по време на изпълнение. Пример е както следва.
Фигура 01: C програма със замяна
Съгласно горната програма, класът Shape е основният клас и съдържа метода за показване. Класът Rectangle и Triangle са производни класове. Тези производни класове също имат същия дисплей на метода със свои собствени реализации.
Първо се създава референтната променлива obj. Той сочи към обекта Shape. И така, методът за показване на клас Shape ще се изпълни. След това референтната променлива сочи към обекта Rectangle. И така, методът за показване на класа Rectangle ще се изпълни. И накрая, референтната променлива сочи към обекта Triangle. И така, методът за показване на класа Triangle ще се изпълни. Методът за показване на базовия клас се отменя от методите за показване на производните класове.
Методът за изпълнение се определя по време на изпълнение. Класът Shape е написан с ключова дума „virtual“. Класовете Rectangle и Triangle са написани с ключова дума ‘override’. Ако тези ключови думи не се използват, изходът ще отпечата съдържанието на метода за показване на клас Shape за всички.
Какво е претоварване в C?
При претоварване множество методи имат едно и също име, но с различни параметри. Параметрите могат да бъдат от различни видове. Методите могат да имат и различен брой параметри. Претоварването на метода възниква в същия клас. Свързването на претоварени методи към дефиницията се случва по време на компилиране. Вижте програмата на C по-долу.
Фигура 02: C програма с претоварване
Съгласно горната програма, клас A има два метода с едно и също име, наречено сума. Те имат различни видове параметри. В основната програма се създава обект от A. Сумата (2, 3) ще извика метода на сумата с цели числа. Сумата (5.1, 7.94) ще извика метода на сумата с двойни стойности. И двата метода имат едно и също име и еднакъв брой параметри. Но типовете параметри са различни. Необходимият метод се извиква съответно. Претоварване може да възникне и ако имената на методите и типовете параметри са еднакви, но броят на параметрите е различен.
Каква е приликата между замяната и претоварването в C?
И Overriding и Overloading в C са типове полиморфизъм
Каква е разликата между замяна и претоварване в C?
Замяна срещу претоварване в C |
|
Отмяната в C е да се осигури специфична реализация в метод на производен клас за метод, който вече съществува в базовия клас. | Претоварването в C е създаването на множество методи с едно и също име с различни реализации. |
Параметри | |
В C Overriding методите имат едно и също име, същите типове параметри и същия брой параметри. | В C Overloading методите имат едно и също име, но различен брой параметри или различен тип параметри. |
Случване | |
В C замяната се извършва в рамките на базовия клас и производния клас. | В C претоварването възниква в рамките на един и същи клас. |
Време на обвързване | |
Свързването на извикването на заместения метод към неговата дефиниция се случва по време на изпълнение. | Свързването на извикването на претоварения метод към неговата дефиниция се случва по време на компилиране. |
Синоними | |
Замяната се нарича полиморфизъм по време на изпълнение, динамичен полиморфизъм или късно свързване. | Претоварването се нарича полиморфизъм по време на компилиране, статичен полиморфизъм или ранно свързване. |
Резюме – Замяна срещу претоварване в C
Замяната и претоварването са два вида полиморфизъм. Разликата между пренатоварване и претоварване в C е, че обвързването на извикването на пренатоварения метод с неговата дефиниция се случва по време на изпълнение, докато обвързването на извикването на пренатоварения метод с неговата дефиниция се случва по време на компилиране.