Переопределение против перегрузки
Метод Overriding и метод Overloading - это две концепции / методики / функции, встречающиеся в некоторых языках программирования. Обе концепции позволяют программисту предоставлять разные реализации для методов с одинаковыми именами. Переопределение метода позволяет программисту предоставлять альтернативную реализацию в подклассе методу, уже определенному внутри его суперкласса. Перегрузка методов позволяет программисту предоставлять разные реализации нескольким методам с одинаковым именем (в пределах одного и того же класса).
Что такое переопределение?
Как упоминалось выше, класс может расширять суперкласс или родительский класс в объектно-ориентированных языках программирования. Дочерний класс может иметь свои собственные методы или может иметь собственные реализации методов, уже определенных в его родительском классе (или одном из его родительских классов). Поэтому, когда происходит последнее, это называется переопределением метода. Другими словами, если дочерний класс предоставляет реализацию методу с такой же сигнатурой и типом возврата, что и метод, уже определенный в одном из его родительских классов, то этот метод считается переопределенным (замененным) реализацией дочернего класса. , Таким образом, если в классе есть переопределенный метод, система времени выполнения должна будет решить, какая реализация метода используется. Эта проблема решается путем просмотра точного типа объекта, который используется для его вызова. Если объект родительского класса используется для вызова переопределенного метода, то используется реализация в родительском классе. Аналогично, если используется объект дочернего класса, то используется реализация дочернего класса. Современные языки программирования, такие как Java, Eifell, C ++ и Python, позволяют переопределять методы.
Что такое перегрузка?
Перегрузка методов - это функция, предоставляемая некоторыми языками программирования для создания более одного метода с одинаковым именем, но с разными типами ввода и вывода. В современных языках программирования, таких как Java, C #, C ++ и VB.NET, эта функция доступна. Вы можете перегрузить метод, создав другой метод с тем же именем, но с другой сигнатурой метода или с другим типом возврата (или обоими). Например, если у вас есть method1 (type1 t1) и method1 (type2 t2) внутри одного класса, они перегружены. Затем система должна будет решить, какой из них будет выполняться при вызове. Это различие делается путем просмотра типа параметра (ов), переданного в метод. Если аргумент имеет тип1, то вызывается первая реализация, а если он имеет тип2, то вызывается вторая реализация.
В чем разница между перегрузкой и перегрузкой?
Хотя переопределение метода и перегрузка метода используются для предоставления метода с различными реализациями, между этими двумя понятиями / методами существуют ключевые различия. Прежде всего, субъекты переопределения методов всегда остаются в разных классах, а субъекты перегрузки методов - в одном классе. Это означает, что переопределение возможно только в объектно-ориентированных языках программирования, которые допускают наследование, тогда как перегрузка может быть доступна и в не объектно-ориентированном языке. Другими словами, вы переопределяете метод в суперклассе, но перегружаете метод в своем собственном классе..
Другое отличие состоит в том, что переопределенные методы имеют одинаковое имя метода, сигнатуру метода и тип возвращаемого значения, но перегруженные методы должны отличаться либо сигнатурой, либо типом возвращаемого значения (имя должно быть одинаковым). Чтобы различать два переопределенных метода, используется точный тип объекта, который используется для вызова идентификатора методов, тогда как для разграничения двух перегруженных методов используются типы параметров. Другое ключевое отличие заключается в том, что перегрузка разрешается во время компиляции, а переопределение - во время выполнения..