Різниця між перевантаженням від перекриття

Перш ніж зануритися в глибоку різницю між перевантаженням та перекриттям, ми повинні зрозуміти, що вони насправді є та сценарії, в яких вони особливо використовуються? Новачки на Яві часто плутаються між ними, але вони абсолютно відрізняються один від одного і використовуються у своїх конкретних сценаріях. Перевантаження методом - це коли у нас є кілька методів з однаковою назвою, але різні підписи. Підписи включають кількість параметрів методу, тип даних параметрів. Тип повернення методу не включається в підпис. Це робиться для забезпечення функціональності повторного використання одного і того ж імені методу та підвищення читабельності програм. Переопределення методу відбувається у випадку спадкування, коли похідний клас успадковує властивості від базового класу. Він включає визначення того самого методу базового класу у похідному класі з тим самим параметром і типом повернення для визначення будь-якої конкретної функціональності / реалізації цього методу у похідному класі.

Розглянемо сценарій, за якого програмісту потрібно знайти область геометричної фігури. Площа кожної фігури змінюється одна від одної. Наприклад, для знаходження площі квадрата потрібен лише один параметр "сторона", для прямокутника потрібні два параметри "довжина і ширина", тоді як для кола "потрібен радіус", який може бути десятковим. Для вирішення цієї мети робиться метод перевантаження, в якій область методу має різні параметри і тип даних для області різних фігур. Подумайте про ситуацію з банківською системою, хоча декілька методів та процедур для всіх працівників однакові, за винятком деяких, як відсоткові ставки для нормальних та людей похилого віку різні. У цьому випадку використовується метод переопределення методів, що має різні реалізації методу процентних ставок як для класу звичайних, так і для старших громадян, що успадковує базовий клас "Банківські ставки".

Порівняння «голова до голови» між перевантаженням та перекриттям (Інфографіка)

Нижче наведено топ-7 порівнянь між перевантаженням та перекриттям :

Ключові відмінності між перевантаженням та перекриттям

Обговоримо деякі основні відмінності між перевантаженням та перекриттям:

  1. У перевантаженні методу методи можуть мати однакові або різні специфікатори / модифікатори доступу у назві методу, тоді як у методі переопределення методу базового випадку (метод переопределення) повинен бути специфікований доступ доступу, ніж метод батьківського класу. Наприклад, якщо метод базового класу захищений, то дочірній метод приватний не дозволений.
  2. Якщо порівнювати з точки зору продуктивності, перевантаження має кращу ефективність порівняно з переосмисленням, оскільки перевантаження методу проводиться під час компіляції.
  3. Тип повернення методу ніколи не є частиною методу Перевантаження, отже, не має значення, якщо різні перевантажені методи мають однаковий або різний тип повернення, тоді як у методі переопределення типу повернення як методів батьківського, так і базового класу повинен бути абсолютно однаковий .
  4. Коли ми говоримо про зв'язування, перевантаження має статичне зв'язування, тоді як перезавантаження має динамічне зв'язування.
  5. Виняток, кинутий методом, не має значення для перевантаженого методу, якщо один метод кидає виняток, інші перевантажені методи можуть / не можуть викинути той самий або інший виняток, але у разі переоцінки метод переопределення (метод у похідному класі) не може викинути виняток з вищої ієрархії, ніж метод, що переосмислюється (метод в базовому класі).
  6. Усі специфікатори, такі як приватні, кінцеві та статичні, не можна використовувати в методі переосмислення, тоді як усі специфікатори доступу дозволені при перевантаженні методу.

Порівняльна таблиця перевантаження над перекриттям

У таблиці нижче наведено порівняння між перевантаженням та перекриттям:

S.No. Перевантаження Переважаючий
1Перевантаження методів проводиться для розширеного визначення методів відповідно до різних ситуацій.Переопределення методів робиться для того, щоб забезпечити конкретну реалізацію методів, визначених у батьківському класі.
2Метод Перевантаження здійснюється в одному класі, в якому один клас, що має різні визначення методу.Переоцінка методу проводиться між двома класами, що мають між собою співвідношення IS-A (Inheritance).
3Метод Перевантаження здійснюється в час компіляції, і тому він відомий як Поліморфізм під час компіляції.Перевизначення методу проводиться під час виконання, і тому він відомий як поліморфізм виконання.
4Впорядкування параметрів, тип даних та кількість параметрів повинні відрізнятися для перевантаження методу.Впорядкування параметрів, тип даних та кількість повинні бути однаковими для переопределення методу.
5Тип повернення методу може бути однаковим або різним у разі перевантаження методу. Це зовсім не має значення.Тип повернення методу повинен бути однаковим як у батьківському, так і дочірньому класі у разі переопределення методу.
6Статичні методи можуть бути перевантажені, тобто ми можемо мати різні статичні методи, перевантажені в одному класі.Статичні методи ніколи не можуть бути відмінені, тобто статичний метод у батьківському класі та базовому класі не має відношення між ними.
7Приватні та заключні методи можуть бути перевантажені в класі, тобто клас може перевантажити більше ніж 1 приватний та заключний методи.Приватні та заключні методи ніколи не можна перекрити в дитячому класі.

Приклад перевантаження методу:

class FIgures(
public int area(int side)
(
return side*side;
)
public int area(int length, int breadth) //method overloading
(
return length*breadth;
)
public static void main(String() args)
(
Figures f = new Figures ();
System.out.println(“Area of Square “+ f.area(10));
System.out.println(“Area of Rectangle “+ f.area(12, 10));
)
)

Вихід:

Площа площі 100
Площа прямокутника 120

У наведеному вище прикладі метод 'area ()' перевантажений і має різні параметри в обох перевантажених методах. Оскільки площа повинна з’ясувати як квадрат, так і прямокутник, але з різними параметрами.

Приклад переосмислення методу:

class BankRates( // parent(base) class
void rates()
(
System.out.println(“Rates for normal citizen is 3.5%”);
)
)
class SeniorCItizen extends BankRates( //child class inheriting parent class
void rates() // method overriding
(
System.out.println(“Rates for senior citizens is 4.5%”);
)
)
class Bank(
public static void main(String() args)
(
SeniorCItizen sc = new BankRates(); sc.rates();
)
)

Вихід:

Тарифи для людей похилого віку 4, 5%

У наведеному вище прикладі метод 'rate ()' переосмислюється у похідному класі 'SeniorCitizen', оскільки ми також хочемо, щоб методи ставок були у класі SeniorCitizen, але з іншою реалізацією.

Висновок

Наведене вище пояснення чітко показує різницю між перевантаженням та переосмисленням та певними сценаріями, де ці два використовуються. Перед програмуванням потрібно зрозуміти ці основні поняття Java, оскільки вони складають основу багатьох речей і допомагають у легкому розумінні більш досконалих концепцій.

Рекомендовані статті

Це було керівництвом щодо найбільшої різниці між перевантаженням над перекриттям. Тут ми також обговорюємо ключові відмінності "Перевантаження" та "Перекриття" за допомогою інфографіки та таблиці порівняння. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Функціональне програмування проти OOP
  2. Що таке перекриття в JavaScript?
  3. Як працює перевантаження в PHP?
  4. Огляд перевантаження в C #
  5. Перевагу в Java
  6. Перевантаження Python
  7. Перевантаження і перезавантаження в C #