Разница между перегрузкой и переопределением | Перегрузка против переопределения

Опубликовано: 2021-06-15

Оглавление

Введение

Объектно-ориентированное программирование играет важную роль в секторах разработки программного обеспечения. С этим типом программирования связаны несколько концепций, таких как класс, объект, полиморфизм, наследование, абстракция данных, универсальное программирование и исключительная обработка.

Разработчики всегда находят концепцию полиморфизма довольно интересной, которая имеет подконцепции, такие как перегрузка методов, переопределение методов и т. д. Однако, чтобы лучше понять концепцию полиморфизма, необходимо понять разницу между перегрузкой и переопределением .

Разница между перегрузкой метода и переопределением метода

Существует много различий между перегрузкой метода и переопределением метода . Список различий между перегрузкой и переопределением методов в java приведен в таблице ниже:

Перегрузка метода Переопределение метода
1 Метод используется для повышения читабельности программы. Метод используется для обеспечения реализации метода, предоставляемого суперклассом.
2 Выполняется в классе Встречается в двух классах, имеющих отношение IS-A (наследование). Базовый и дочерний класс необходимы для переопределения.
3 Методы или функции должны иметь одинаковое имя и разные подписи. Методы или функции должны иметь одинаковые имена и сигнатуры.
4 Параметры, используемые в этом методе, должны быть другими. Те же параметры следует использовать в случае переопределения метода.
5 Это пример полиморфизма времени компиляции. Привязка вызова метода перегрузки к его определению происходит во время компиляции. Это пример полиморфизма во время выполнения. Привязка вызова переопределенного метода к его определению происходит во время выполнения.
6 Только изменив возвращаемый тип, перегрузка метода не может быть выполнена. Тип возвращаемого значения может быть другим или одинаковым. Но параметры должны быть другими. Тип возвращаемого значения при переопределении метода может быть таким же или ковариантным.
7 Перегрузка метода может применяться к статическим методам. Это означает, что класс может иметь более одного статического метода с одним и тем же именем. Переопределение метода не может быть применено к статическим методам.
8 Статическая привязка используется для перегрузки методов. Динамическое связывание используется для переопределения метода.
9 Лучшая производительность достигается за счет перегрузки методов. Меньшая производительность по сравнению с перегрузкой метода. Причина в том, что привязка переопределенных методов выполняется во время выполнения.
10 Частные и окончательные методы могут быть перегружены. Класс может иметь более одного метода private/final с одним и тем же именем. Частные и окончательные методы не могут быть переопределены. Дочерний класс не может переопределить методы private/final своего базового класса.
11 Наследование может потребоваться или не потребоваться в случае перегрузки метода. Наследование всегда требуется в случае переопределения метода.
12 Он используется для того, чтобы добавить больше к поведению методов. Он используется для изменения поведения существующих методов.
13 Нет необходимости в наличии более одного класса при перегрузке методов. Всегда есть потребность как минимум в двух классах для переопределения методов.
14 Если перегрузка прерывается, возникает ошибка времени компиляции, которую легко исправить. Если переопределение прерывается, это может вызвать серьезные проблемы в нашей программе, потому что эффект будет виден во время выполнения.
15 Перегрузка метода должна иметь другую подпись. Переопределение метода должно иметь ту же сигнатуру.
16 Модификаторы доступа в методе перегрузки могут быть любыми или разными. Модификатор доступа к методу подкласса должен быть таким же или выше, чем модификатор доступа к методу суперкласса в переопределяющем методе.
17 Исключения могут быть любыми в концепции перегрузки методов. При переопределении метода непроверенные исключения могут быть любыми. Для проверенных исключений переопределяющий метод не должен генерировать никаких исключений, которые являются новыми или более широкими, чем те, которые объявлены переопределенным методом.
18 Компилятор всегда заботится о разрешении метода на основе ссылочного типа. JVM заботится о разрешении метода на основе объекта среды выполнения.

Изучайте онлайн-курсы по программному обеспечению от лучших университетов мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Что дальше?

Если вам интересно узнать больше о разработке программного обеспечения с полным стеком, ознакомьтесь с программой Executive PG upGrad и IIIT-B в разработке программного обеспечения с полным стеком, которая предназначена для работающих профессионалов и предлагает более 500 часов интенсивного обучения, более 9 проектов и задания, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.

Что такое полиморфизм времени выполнения?

Полиморфизм времени выполнения — это разновидность полиморфизма, включающая динамическую типизацию. Это означает, что объектами можно манипулировать, как если бы они были одного типа. Это похоже на статический полиморфизм, при котором объекты обрабатываются так, как если бы они имели один тип, независимо от их базового типа. Это один из пяти основных принципов проектирования программного обеспечения. Он используется с объектно-ориентированным программированием. Это означает, что переменная может ссылаться на разные объекты в зависимости от условий выполнения. Например, переменная может использоваться для ссылки на объект Dog при объявлении переменной, но во время выполнения программы переменная может ссылаться на объект Cat. Это автоматическое преобразование типов. Например, если у вас есть целочисленная переменная i и вы присваиваете ей строковое значение, она станет строковой переменной.

Чем переопределение отличается от перегрузки?

Можем ли мы переопределить перегруженный метод?

Перегруженный метод ничем не отличается от обычного (по количеству и типу параметров), но с той разницей, что перегруженный метод написан таким образом, что может принимать параметры другого типа, чем обычный. Вы можете переопределить перегруженный метод так же, как и обычный.