Ключевое отличие - переопределение и перегрузка в C #
Ключевое различие между переопределением и перегрузкой в C # состоит в том, что привязка вызова переопределенного метода к его определению происходит во время выполнения, а привязка вызова перегруженного метода к его определению происходит во время компиляции.
C # - это язык программирования общего назначения, разработанный Microsoft. Основное преимущество C # в том, что он поддерживает объектно-ориентированное программирование (ООП). Один из столпов ООП - полиморфизм. Это дает объекту несколько вариантов поведения. В полиморфизме есть два типа, известные как переопределение и перегрузка. В этой статье обсуждается разница между переопределением и перегрузкой метода в C #.
СОДЕРЖАНИЕ
1. Обзор и основные отличия
2. Что является переопределением в C #
3. Что является перегрузкой в C #
4. Сходства между переопределением и перегрузкой в C #
5. Параллельное сравнение - переопределение и перегрузка в C # в табличной форме
6. Резюме
Что такое переопределение в C #?
В ООП есть еще одно важное понятие - наследование. Это использование атрибутов и методов уже существующего класса. Это улучшает возможность повторного использования кода. Уже существующий класс является базовым, а новый класс известен как производный класс. При переопределении полиморфизма должны быть базовый класс и производный класс. Привязка переопределенного вызова метода к определению происходит во время выполнения. Пример следующий.
Рисунок 01: Программа C # с переопределением
Согласно приведенной выше программе класс Shape является базовым классом и содержит метод отображения. Классы Rectangle и Triangle являются производными классами. Эти производные классы также имеют одинаковый метод отображения со своими собственными реализациями.
Сначала создается ссылочная переменная obj. Он указывает на объект Shape. Итак, метод отображения класса Shape будет выполнен. Затем ссылочная переменная указывает на объект Rectangle. Итак, метод отображения класса Rectangle будет выполнен. Наконец, ссылочная переменная указывает на объект Triangle. Итак, метод отображения класса Triangle будет выполнен. Метод отображения базового класса переопределяется методами отображения производных классов.
Метод запуска определяется во время выполнения. Класс Shape написан с ключевым словом virtual. Классы Rectangle и Triangle записываются с ключевым словом override. Если эти ключевые слова не используются, на выходе будет напечатано содержимое метода отображения класса Shape для всех.
Что такое перегрузка в C #?
При перегрузке несколько методов имеют одно и то же имя, но с разными параметрами. Параметры могут быть разных типов. У методов также может быть разное количество параметров. Перегрузка метода происходит в том же классе. Связывание перегруженных методов с определением происходит во время компиляции. См. Приведенную ниже программу на C #.
Рисунок 02: Программа C # с перегрузкой
Согласно приведенной выше программе, класс A имеет два метода с одинаковым именем sum. У них разные типы параметров. В основной программе создается объект A. Сумма (2,3) вызовет метод суммы с целыми числами. Сумма (5.1, 7.94) вызовет метод суммы с двойными значениями. Оба метода имеют одинаковое имя и одинаковое количество параметров. Но типы параметров разные. Соответственно вызывается требуемый метод. Перегрузка также может возникнуть, если имена методов и типы параметров совпадают, но количество параметров отличается.
В чем сходство между переопределением и перегрузкой в C #?
И переопределение, и перегрузка в C # являются типами полиморфизма
В чем разница между переопределением и перегрузкой в C #?
Различать статью в середине перед таблицей
Переопределение и перегрузка в C # |
|
Переопределение в C # заключается в предоставлении конкретной реализации в методе производного класса для метода, уже существующего в базовом классе. | Перегрузка в C # заключается в создании нескольких методов с одним и тем же именем с разными реализациями. |
Параметры | |
В C # Overriding методы имеют одинаковое имя, одинаковые типы параметров и одинаковое количество параметров. | В C # Overloading методы имеют то же имя, но другое количество параметров или другой тип параметров. |
Вхождение | |
В C # переопределение происходит внутри базового и производного классов. | В C # перегрузка происходит внутри того же класса. |
Время привязки | |
Привязка переопределенного вызова метода к его определению происходит во время выполнения. | Привязка вызова перегруженного метода к его определению происходит во время компиляции. |
Синонимы | |
Переопределение называется полиморфизмом времени выполнения, динамическим полиморфизмом или поздним связыванием. | Перегрузка называется полиморфизмом времени компиляции, статическим полиморфизмом или ранним связыванием. |
Резюме: переопределение и перегрузка в C #
Переопределение и перегрузка - это два типа полиморфизма. Разница между переопределением и перегрузкой в C # состоит в том, что привязка вызова переопределенного метода к его определению происходит во время выполнения, а привязка вызова перегруженного метода к его определению происходит во время компиляции.