Рекомендуємо, 2024

Вибір Редакції

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

Спосіб перевантаження
Перевантаження методу, також відоме як перевантаження функцій або поліморфізм часу компіляції, є концепцією наявності двох або більше методів з однаковою назвою, але різної підписи в тій же області. Є багато мов програмування, які підтримують цю функцію: Ada, C ++, C #, D і Java.

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

клас OverloadShapes {float Полігон (int radius, float pi) {float circleArea = pi * радіус * радіус; } int Полігон (int довжина, int ширина) {int rectangleArea = довжина * ширина; } int Полігон (int сторона) {int squareArea = сторона * сторона; }}
1 2 3 4 5 6 7 8 9 10 11 12 13 14клас OverloadShapes {float Полігон (int radius, float pi) {float circleArea = pi * радіус * радіус; } int Полігон (int довжина, int ширина) {int rectangleArea = довжина * ширина; } int Полігон (int сторона) {int squareArea = сторона * сторона; }}

Як показано в наведеному вище прикладі, метод 'Polygon' перевантажується 3 рази різним методом підпису, тобто тип або кількість параметрів різні.

Метод перевизначення
Метод перевизначення, також відомий як перекриття функції або поліморфізм часу виконання, є функцією ООП, яка дозволяє дочірньому класу надавати власну реалізацію методу, визначеному в батьківському класі. Реалізація в дочірньому класі перевизначає визначення методу в базовому класі, за умови, що метод у дочірньому класі повинен мати однакову назву, підпис і тип повернення.

Приклад перевизначення методу в C #

class Source1 {public void draw () {Console.Writeline ("Я в класі Source1"); }} class Source2 розширює Source1 {public void draw () {Console.Writeline ("Я в класі Source2"); }}
1 2 3 4 5 6 7 8 9 10class Source1 {public void draw () {Консоль. Writeline ("Я в класі Source1"); }} клас Source2 розширює Source1 {public void draw () {Консоль. Writeline ("Я в класі Source2"); }}

Тут метод draw у класі Source2 замінює метод малювання, визначений у класі Source1.

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

  1. У методі перевантаження методи повинні мати іншу підпис. У методі методи перевизначення повинні мати однакову підпис.
  2. Функція Перевантаження полягає в тому, щоб «додати» або «розширити» більше поведінку методу. Перевизначення функцій полягає в тому, щоб повністю "змінити" або "перевизначити" поведінку методу.
  3. Спосіб перевантаження використовується для досягнення поліморфізму часу компіляції; Метод перевизначення використовується для досягнення поліморфізму часу виконання.
  4. У методі / функції перевантаження компілятор знає, який об'єкт, призначений якому класу під час компіляції, але в методі перевизначення ця інформація не відома до часу виконання.
  5. Функція Перевантаження відбувається в тому ж класі, тоді як Перевизначення відбувається в класі, що походить від базового класу.
Top