Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
Vehicle v = new Taxi();
Console.WriteLine(v.Who());
class Vehicle { public virtual string Who() => "V"; }
class Car : Vehicle { public override string Who() => "C"; }
class Taxi : Car
{
public override string Who() => "T" + base.Who();
}TC
- Ждать
V: у переменной типVehicle, ноWhoвиртуальный, поэтому версия берётся из типа объекта —Taxi. - Ждать
TVилиTCV:base.Who()выполняет только версию прямого базового классаCar, аCar.Whoне вызываетVehicle.Who.
- Что напечатает программа, если в
Taxiне будет своего методаWho? - Что произойдёт при компиляции, если убрать
virtualуVehicle.Who?