В чем разница между переопределением (override), от перекрытия (new), наследуемого метода? Доброго времени суток! Условие:
Я имею родительский и дочерний от него методы, мне нужно изменить функционал унаследованного метода, для чего могу прибегнуть либо к переопределению уже имеющегося метода, либо перекрыть исходный новым.Вопросы Как можно визуализировать эти подходы? Override - зачеркиваю и пишу поверх, а New ? Когда использовать переопределение, а когда перекрытие ? Как компилятор преобразует код в обоих случаях ? Он по ключевому слову понимает, что нужно перезаписать (override), а что удалить (new) ?
Очень прошу, подкрепите ответ практическим примером (можно из вашего личного опыта). Заранее благодарю за внимание!

21 Авг 2019 в 06:58
237 +1
0
Ответы
1

Доброго времени суток! Давайте разберемся в вашем вопросе.

Переопределение (override) - это процесс замены реализации унаследованного метода в дочернем классе на новую реализацию. При переопределении метода в дочернем классе используется ключевое слово "override". Таким образом, когда вызывается метод из экземпляра дочернего класса, будет выполнена новая реализация этого метода.

Пример:

class Parent
{
public virtual void Method()
{
Console.WriteLine("Parent");
}
}
class Child : Parent
{
public override void Method()
{
Console.WriteLine("Child");
}
}

В данном случае метод Method в классе Child переопределяет метод Method из класса Parent.

Перекрытие (new) - это процесс определения нового метода с тем же именем и сигнатурой в дочернем классе. Для этого используется ключевое слово "new". При вызове метода из экземпляра дочернего класса будет выполнена новая реализация метода, не вызывая метод из родительского класса.

Пример:

class Parent
{
public void Method()
{
Console.WriteLine("Parent");
}
}
class Child : Parent
{
public new void Method()
{
Console.WriteLine("Child");
}
}

Здесь метод Method в классе Child перекрывает метод Method из класса Parent, но при вызове метода из экземпляра класса Child будет выполнена новая реализация без использования метода из класса Parent.

Как выбрать между переопределением и перекрытием? Если необходимо изменить поведение метода родительского класса в дочернем классе, следует использовать переопределение. Если же требуется добавить новый метод с тем же именем и сигнатурой в дочернем классе, следует использовать перекрытие.

Компилятор определяет, что нужно перезаписать метод (override) или добавить новый метод (new) на основе ключевых слов override и new в дочернем классе.

Надеюсь, что эти объяснения и примеры помогли вам понять разницу между переопределением и перекрытием методов. Если у вас остались вопросы, не стесняйтесь задавать их!

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 887 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир