Это один из видов полиморфизма. Википедия сообщает, что такой полиморфизм не является истинным полиморфизм.
https://ru.wikipedia.org/wiki/Полиморфизм_(информатика)
Другие языки программирования и технологии
Является ли перегрузка методов проявлением полиморфизма?
И да, и нет. Смотря что они имеют в виду под полиморфизмом.
В общем случае полиморфизм это возможность обращаться одинаковым образом с сущностями разных типов. Или, чуть более научно, существование общего интерфейса (в отрыве от C#) у сущностей различных типов. Это очень общее понятие, которое можно очень много на что натянуть. Что при этом произойдёт и какие абстракции языка при этом будут задействованы, не столь важно.
К этому полиморфизму перегрузка методов относится самым прямым образом: это ad-hoc полиморфизм для функции: в неё можно передавать различные типы (в границах реализованных перегрузок) и при этом будет выполнен разный код. (А методы объектов классов можно рассматривать, как функции с дополнительным неявным аргументом: объектом, у которого метод вызывается [this в шарпе].)
Может возникнуть закономерный вопрос: не являются ли тогда различные перегрузки разными функциями, не ломается ли при этом соответствие определению полиморфизма? Ответ: полиморфизм существует на уровне языка, и если в языке перегрузки с одинаковыми названиями, но разными типами, считаются одной и той же функцией, то определение соблюдено и всё ок.
Уровнями ниже, конечно, разный код размещается в разных местах и реализация как-то должна направлять в разные места, технически обращаясь с переданными значениями по-разному. Но вы с этими уровнями напрямую уже не работаете, полиморфизм там если и есть (что вряд ли) то не совсем (или совсем не?) тот, которым вы пользуетесь.
В ООП же под полиморфизмом обычно понимают гораздо более узкое понятие: возможность вызывать один и тот же метод у любого объекта заданного класса/интерфейса или любого его подкласса/реализации.
К этому полиморфизму перегрузка действительно не имеет отношения
В общем случае полиморфизм это возможность обращаться одинаковым образом с сущностями разных типов. Или, чуть более научно, существование общего интерфейса (в отрыве от C#) у сущностей различных типов. Это очень общее понятие, которое можно очень много на что натянуть. Что при этом произойдёт и какие абстракции языка при этом будут задействованы, не столь важно.
К этому полиморфизму перегрузка методов относится самым прямым образом: это ad-hoc полиморфизм для функции: в неё можно передавать различные типы (в границах реализованных перегрузок) и при этом будет выполнен разный код. (А методы объектов классов можно рассматривать, как функции с дополнительным неявным аргументом: объектом, у которого метод вызывается [this в шарпе].)
Может возникнуть закономерный вопрос: не являются ли тогда различные перегрузки разными функциями, не ломается ли при этом соответствие определению полиморфизма? Ответ: полиморфизм существует на уровне языка, и если в языке перегрузки с одинаковыми названиями, но разными типами, считаются одной и той же функцией, то определение соблюдено и всё ок.
Уровнями ниже, конечно, разный код размещается в разных местах и реализация как-то должна направлять в разные места, технически обращаясь с переданными значениями по-разному. Но вы с этими уровнями напрямую уже не работаете, полиморфизм там если и есть (что вряд ли) то не совсем (или совсем не?) тот, которым вы пользуетесь.
В ООП же под полиморфизмом обычно понимают гораздо более узкое понятие: возможность вызывать один и тот же метод у любого объекта заданного класса/интерфейса или любого его подкласса/реализации.
К этому полиморфизму перегрузка действительно не имеет отношения
Похожие вопросы
- Инкапсуляция, полиморфизм Обясните по проще что такое инкапсуляция и полиморфизм?
- Вопрос про полиморфизм в С++.
- Можете объяснить мне в простых терминах ну или с коротким примером Полиморфизм?
- Перегрузка операций методами класса в С++. Расскажите, пожалуйста, кратко и доходчиво на каком-нибудь примере.
- C++ Помогите, не работает перегрузка
- Подскажите про перегрузку/переопределение C#
- Перегрузка сложения в С++
- Как полиморфизм модефецирует принцип наследования?
- объясните глупой что такое полиморфизм в с++.скока всего прочла и так и не могу понять((((
- Что такое полиморфизм? Только можно на примере а не теорию?