В одних статьях пишут перегрузка, в других пишут переопределение. Тоже самое с наследниками и производными. По смыслу это одно и то же, но как правильно:
перегрузка или переопределение?
в наследниках или в производных?
Чтобы далеко не ходить за примерами я стал искать прямо на сайте ответы по интересующим меня методам 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 внес исправления в свой ответ.
Ошибки в других ответах, надеюсь, также будут исправлены.
Ответ
перегрузка или переопределение?
По смыслу - это абсолютно разные вещи.
Перегрузка (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. В различных источниках могут использоваться другие варианты перевода. В любом случае, первичным остается смысл оригинальных терминов на английском.
Комментариев нет:
Отправить комментарий