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

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

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

Видео: Разница между переопределением и перегрузкой
Видео: Java SE. Урок 22. Полиморфизм. Перегрузка и переопределение методов 2024, Март
Anonim

Переопределение против перегрузки

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

Что такое переопределение?

Как упоминалось выше, в объектно-ориентированных языках программирования класс может расширять суперкласс или родительский класс. Дочерний класс может иметь свои собственные методы или, при желании, может иметь собственные реализации методов, уже определенных в его родительском классе (или одном из его основных родительских классов). Поэтому, когда происходит последнее, это называется переопределением метода. Другими словами, если дочерний класс предоставляет реализацию метода с той же сигнатурой и возвращаемым типом, что и метод, уже определенный в одном из его родительских классов, этот метод считается переопределенным (замененным) реализацией дочернего класса.. Итак, если в классе есть переопределенный метод, система времени выполнения должна будет решить, какая реализация метода используется. Эта проблема решается путем проверки точного типа объекта, который используется для его вызова. Если объект родительского класса используется для вызова переопределенного метода, то используется реализация в родительском классе. Точно так же, если используется объект дочернего класса, то используется реализация дочернего класса. Современные языки программирования, такие как Java, Eifell, C ++ и Python, допускают переопределение методов.

Что такое перегрузка?

Перегрузка методов - это функция, предоставляемая некоторыми языками программирования для создания нескольких методов с одним и тем же именем, но с разными типами ввода и вывода. В современных языках программирования, таких как Java, C #, C ++ и VB. NET, эта функция доступна. Вы можете перегрузить метод, создав другой метод с тем же именем, но с другой сигнатурой метода или другим типом возвращаемого значения (или и тем, и другим). Например, если у вас есть method1 (type1 t1) и method1 (type2 t2) внутри одного класса, то они перегружены. Затем система должна будет решить, какой из них выполнять при вызове. Это различие осуществляется путем анализа типа параметра (ов), переданных в метод. Если аргумент имеет тип 1, то вызывается первая реализация, а если он имеет тип 2, то вызывается вторая реализация.

В чем разница между переопределением и перегрузкой?

Хотя переопределение метода и перегрузка метода используются для предоставления метода с различными реализациями, между этими двумя концепциями / методами есть ключевые различия. Во-первых, субъекты переопределения метода всегда находятся в разных классах, а субъекты перегрузки метода остаются в одном классе. Это означает, что переопределение возможно только в объектно-ориентированных языках программирования, допускающих наследование, в то время как перегрузка может быть доступна и на не объектно-ориентированных языках. Другими словами, вы переопределяете метод в суперклассе, но перегружаете метод в своем собственном классе.

Другое отличие состоит в том, что переопределенные методы имеют одинаковое имя метода, сигнатуру метода и тип возвращаемого значения, но перегруженные методы должны различаться либо подписью, либо типом возвращаемого значения (имя должно быть таким же). Чтобы различать два переопределенных метода, используется точный тип объекта, который используется для вызова идентификатора используемых методов, а для различения двух перегруженных методов используются типы параметров. Еще одно ключевое отличие состоит в том, что перегрузка разрешается во время компиляции, а переопределение разрешается во время выполнения.

Рекомендуем: