Перегрузка и переопределение это вроде как разные понятия, но используются вперемешку, и я не совсем понимаю разницу между ними. Можете пожалуйста доступно объяснить разницу между этими понятиями?
Перегрузка - это использование методов с одиаковым именем и с разной сигнатурой в одном классе, но с одной реализацией. При этом метод становится универсальным, т.к. благодаря расширенной сигнатуре он автоматически может использоваться в разных контекстах, и это удобно.
Переопределение - это понятие, которое относится к теме о виртуальных и абстрактных методах. Переопределением называют возможность заменить реализацию метода в базовом классе классом-наследником.
Ключевое слово переопределения в языке C# это override. Так же иногда используется техника сокрытия метода с помощью ключевого слова new.
Техника сокрытия:
class A
{
public void Method() { Console.WriteLine("Hello world!"); }
}
class B : A
{
public new void Method() { Console.WriteLine("Hello World!!!"); }
}</strong></pre>
Переопределение:
abstract class A
{
public abstract void Method();
};
class B : A
{
public override void Method()
{
Console.WriteLine("Hello World!!!");
}
}</strong></pre>