@EugeneTypescript
Учусь и работаю

Зачем использовать override, new для переопределения, сокрытия?

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

пример:
class A 
{
    public string GetInt() 
    {
        // бла бла бла
        return 10;
    }
}

class B : A 
{
    public string GetInt() // много мест, 
    {
        // бла бла бла, но нет вызова метода из базового класса
        return 20;
    }
}

много где в таких местах используют override, new, мне непонятно, зачем?

Пример с metanit

class Clock
    {
        public int Hours { get; set; }
        public int Minutes { get; set; }
        public int Seconds { get; set; }
        public override string ToString() // переопределяем ToString из System.Object
        {
            return $"{Hours}:{Minutes}:{Seconds}";
        }
    }

  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
sarapinit
@sarapinit Куратор тега C#
Точу водой камень
Тут не про использование метода из базового класса на самом деле.
Суть в том что переопределенный метод будет работать если привести класс к базовому классу A,
а перекрытый метод будет работать только в конкретном классе B.

new
class A { public string GetInt() => "10"; }
class B : A {public new string GetInt() => "20";}

B item= new B();
item.GetInt(); // вернет 20
A item2 = (A)item;
item.GetInt(); // вернет 10


override
class A { public virtual string GetInt() => "10"; }
class B : A {public override string GetInt() => "20";}

B item= new B();
item.GetInt(); // вернет 20
A item2 = (A)item;
item.GetInt(); // вернет 20
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы