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

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

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

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

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

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

Что важнее?

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

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

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

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

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

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

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