Bird
Raised Fist0

Given the classes below, what will be the output?

hard🚀 Application Q15 of Q15
C Sharp (C#) - Inheritance
Given the classes below, what will be the output?
class Vehicle {
  public virtual string Describe() => "Vehicle";
}
class Car : Vehicle {
  public override string Describe() => "Car";
}
class SportsCar : Car {
  public new string Describe() => "SportsCar";
}

Vehicle v = new SportsCar();
Car c = new SportsCar();
SportsCar s = new SportsCar();

Console.WriteLine(v.Describe());
Console.WriteLine(c.Describe());
Console.WriteLine(s.Describe());
AVehicle Car SportsCar
BCar Car SportsCar
CVehicle Vehicle Vehicle
DSportsCar SportsCar SportsCar
Step-by-Step Solution
Solution:
  1. Step 1: Understand new vs override

    SportsCar uses new to hide Describe, not override it. So base class virtual dispatch applies only up to Car.
  2. Step 2: Trace each call

    v.Describe() calls Vehicle reference to SportsCar instance, but virtual dispatch stops at Car override, so returns "Car".
    c.Describe() calls Car reference to SportsCar, same as above, returns "Car".
    s.Describe() calls SportsCar reference, so calls hidden method returning "SportsCar".
  3. Final Answer:

    Car Car SportsCar -> Option B
  4. Quick Check:

    new hides method, override dispatches virtual [OK]
Quick Trick: new hides method; override participates in virtual dispatch [OK]
Common Mistakes:
MISTAKES
  • Expecting new method to override virtual dispatch
  • Confusing new with override behavior
  • Assuming base reference calls hidden method

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More C Sharp (C#) Quizzes