Вступ до перевантаження та перезавантаження в Java

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

Перевантаження в Java

Коли у класі java є кілька методів з тим самим іменем, але з різними аргументами, ми називаємо це метод Overloading. Зберігаючи ім’я таким же, ми просто збільшуємо читабельність програмного коду. Наприклад, припустимо, що нам потрібно виконати деяку операцію додавання на деяких заданих числах. Скажімо, назва нашого методу - «додавання ()». Тут додавання може бути зроблено між двома числами, трьома числами чи більше. Отже, залежно від того, скільки чисел буде включати додаткові операції, ми можемо змінити аргументи (або параметри) функції. Але замість цього, якщо ви писали різні методи для різної кількості аргументів, важко буде розпізнати, як ім'я було б іншим. Отже, перевантажуючи, ми досягаємо кращої читабельності нашого коду. Тож тепер питання в тому, як ми досягнемо перевантаження?

Давайте розглянемо їх по черзі з прикладами кодів.

Спосіб №1 - Змінивши кількість параметрів

Отже тут ми зробимо операцію додавання на деяких номерах. Для цього давайте створимо клас під назвою “AdditionOperation”. Всередині цього класу будемо мати два методи з назвою "додавання ()". В одному з таких методів ми виконаємо додавання двох чисел. В іншому ми виконаємо додавання трьох чисел. Цього ми досягнемо, просто змінивши кількість параметрів у цих методах, але назву збережемо однаковою. Таким чином, ми перевантажуємо тут метод «додавання ()».

Код:

public class AdditionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static int addition(int num1, int num2, int num3)(return num1+num2+num3;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35, 36, 37)); //method overloading, we are calling same methods but for different number of arguments.
)
)

Вихід:

Спосіб №2 - Змінивши тип даних

Отже, тут ми будемо робити операції додавання на різних типах, наприклад між цілим типом і між подвійним типом. Для цього давайте створимо клас під назвою “AdditionOperation”. Всередині цього класу матимемо два методи під назвою "додавання ()". В одному з таких методів ми виконаємо додавання двох цілих чисел. В іншому ми виконаємо додавання двох дублів. Цього ми досягнемо, просто змінивши тип параметрів у цих методах, але назву ми збережемо однаковою. Таким чином, ми перевантажуємо тут метод «додавання ()».

Код:

public class additionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static double addition(double num1, num2)(return num1+num2;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35.5, 36.6)); //method overloading, we are calling same methods but for different type of arguments.
)
)

Вихід:

Бали, які слід помітити за перевантаження

  • Перевантаження в Java - це в основному полім часу компіляції. Метод перевантаження в орфізмі C #. Поліморфізм у компіляційному періоді у Java також називається "Статичний метод диспетчеризації" або "Ранній зв'язок". То що я маю на увазі під цим жаргоном?
  • Поліморфізм, як випливає з назви, є в основному здатністю приймати багато форм (poly: many, morph: form). Отже, тут пов'язування або прив'язка перевантаженої функції і об'єкта робиться час компіляції. Звідси це називається поліморфізмом часу компіляції.
  • В основному, тут прив'язка функції до об'єкта виконується на початку до запуску (тобто під час компіляції), отже, вона також називається "Рання прив'язка".
  • Статична диспетчеризація - це тип поліморфізму або методу відправки, який говорить про те, як java вибере, яка функціональність методу буде використовуватися під час компіляції. (Я маю на увазі, чи виконає додавання двох чи трьох чисел у нашому прикладі кодування). Тож назва також відома як статичний метод диспетчеризації.

Перевагу в Java

  • Коли підклас java або дочірній клас має метод, який має однакову назву і містить ті самі параметри або аргументи і подібний тип повернення, як метод, який присутній у його надкласі або батьківському класі, то метод дитячого класу можна назвати як перекритий метод методу його батьківського класу.
  • Наприклад, припустимо, що нам потрібно виконати деяку операцію з відображенням відповідно до типу класу. Я маю на увазі, якщо я називаю метод батьківського класу, він відображатиме повідомлення, визначене у батьківському класі. Але, коли ми називаємо метод дочірнього класу, він замінить дисплейне повідомлення його батьківського класу і покаже повідомлення відображення, яке визначено всередині методу дочірнього класу. Отже, залежно від того, який дисплей нам потрібно показати, ми можемо викликати пов'язаний клас (батько чи дитина). Тут ми не змінюємо ім'я методу, аргумент та тип повернення. Ми просто змінюємо функціональність методу в дочірньому класі. Але замість цього, якщо ми не зробимо переосмислення, тобто не дамо конкретної реалізації дочірнього методу, то під час виклику методу він відображатиме те саме повідомлення, що і у батьківському класі.
  • Під час написання коду ми будемо використовувати анотацію @ Override перед тим, як перекрити метод. Анотація @Override повідомляє компілятору, що метод повинен замінити метод, який був оголошений у суперкласі. Хоча використовувати це не обов’язково, це допомагає запобігти помилкам. Якщо метод, який позначається за допомогою @Override, не змінює метод, компілятор генерує помилку.

Правила переопределення методів Java

  1. Метод повинен мати те саме ім’я, що і в батьківському класі
  2. Метод повинен мати той самий параметр, що і в батьківському класі.
  3. Повинні існувати відносини IS-A (спадкування).

Код:

//Parent or Super class
class Parent (
public void display() (
system.out.printin("Hello, I am from parent class");
)
)
//Child or sub class
class Sub extends Parent (
//Below method overrides the Parent display() method
// @override
public void display() (
system.out.printin("Hello, I am from child class");
)
)
//Driver class
public class Overriding (
public static void main?(String args())
(
Parent superObject = new Parent ();
superObject.display(); // Super class method is called
Parent subObject = new Sub();
subObject.display(); //Child class method is called by a parent type reference: this is functionality of method overriding
Sub subObject2 = new Sub(); //Child class method is called by a child type reference
subObject2.display();
)
)

Вихід:

Обмеження в методі переопределення:

  1. Приватні методи батьківського класу неможливо змінити.
  2. Остаточні методи не можна перекрити
  3. Статичні методи не можна перекрити

Бали, які слід помітити за переосмислення

  • Перевантаження в java - це в основному поліморфізм часу. Поліморфізм часу роботи в Java також називають "Динамічним методом диспетчеризації" або "Пізнім зв'язуванням". Отже, що мається на увазі під цим жаргоном?
  • Поліморфізм, як випливає з назви, є в основному здатністю приймати багато форм (poly: many, morph: form). Отже, тут виклик перевантаженої функції з об'єктом робиться час виконання. Звідси називається поліморфізмом часу виконання.
  • В основному тут прив'язка функції до об'єкта виконується пізно, що відбувається після компіляції (тобто під час виконання); отже, його також називають "пізнім зв'язуванням".
  • Динамічна диспетчеризація - це тип поліморфізму або методу відправки, який говорить про те, як java вибере, яка функціональність методу буде використовуватися під час виконання. Тож назва також відома як Динамічний метод Dispatch.

Висновок

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

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

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

  1. Перевірка в JavaScript
  2. Перевагу в ООП
  3. Що таке дженерики на Java?
  4. Перевірка в PHP
  5. Перевантаження Python
  6. Спадщина в PHP
  7. Повне керівництво по спадщині в Python
  8. Перевантаження і перезавантаження в C #
  9. Типи та помилки обробки в JavaScript
  10. Приклади та як дженерики працюють у C #
  11. Функція та правила переосмислення в Python