Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
Vehicle a = new Car();
Vehicle b = new Bike();
Console.WriteLine(a.Who() + b.Who());
class Vehicle { public virtual string Who() => "V"; }
class Car : Vehicle { public override string Who() => "C"; }
class Bike : Vehicle { public new string Who() => "B"; }CV
- Ждать
CB:newскрывает метод вместо того, чтобы переопределить его, поэтому через переменную типаVehicleвыполняется версияVehicle. - Ждать
VV: приoverrideверсия берётся из типа объекта, поэтомуa.Who()выполняетCar.Whoдаже через переменную типаVehicle.
- Что вернёт
new Bike().Who()и почему? - Какое предупреждение выдаст компилятор, если убрать
newуBike.Who?