#c_sharp #терминология
В одних статьях пишут перегрузка, в других пишут переопределение. Тоже самое с наследниками и производными. По смыслу это одно и то же, но как правильно: перегрузка или переопределение? в наследниках или в производных? Чтобы далеко не ходить за примерами я стал искать прямо на сайте ответы по интересующим меня методам Equals и OnModelCreating, которые описаны в документации как виртуальные, и нашел следующие ответы: "следует перегрузить метод OnModelCreating - и написать там примерно следующее" 27 май '15 в 15:53, Pavel Mayorov, 9,255 "базовый класс всех типов-значений, перегружает метод Equals" 30 сен '15 в 0:01, VladD, 74k "Переопределите Equals так, чтобы он сравнивал два экземпляра" 23 дек '15 в 8:52, PashaPash, 20.1k Из контекста следует, что в ответах говорят о виртуальных методах. Получается, что перегрузка и переопределение - это одно и тоже. Хотелось бы понять как правильно: перегрузка или переопределение? UPD: (2/10/2016 8:52 PM) Перегрузка и переопределение, как сказал rdom: это абсолютно разные вещи. VladD внес исправления в свой ответ. Ошибки в других ответах, надеюсь, также будут исправлены.
Ответы
Ответ 1
перегрузка или переопределение? По смыслу - это абсолютно разные вещи. Перегрузка (Overloading) - это возможность использовать одинаковые имена в пределах одного класса у методов сходных по своей сути, но не реализации,за счет расширения понятия имени метода до сигнатуры. Подробнее в соседнем вопросе Переопределение (Overriding) - относится к виртуальным и абстрактным методам. Это возможность замены виртуального или реализация абстрактного наследуемого метода базового класса методом производного класса. Пример: class A { virtual void SomeMethod(int par1, double par2) { } //Делаем перегруженный вариант метода для другого набора параметров void SomeMethod(double par1, int par2) {} } class B : A { //Переопределяем унаследованный виртуальный метод override void SomeMethod(int par1, double par2) { } } UPD в наследниках или в производных? тут разночтений нет. Производный класс, класс наследник, а также принятые в Java суб-класс или подкласс, являются синонимами. Также синонимами являются базовый класс, класс предок, супер-класс(java) и над-класс(java). Дабы не плодить споры: я использую перевод принятый в MSDN. В различных источниках могут использоваться другие варианты перевода. В любом случае, первичным остается смысл оригинальных терминов на английском.
Комментариев нет:
Отправить комментарий