Challenge 3: The CS0114 Warning, Reproduced — Possible Solution ==================================================================== Program.cs: class Shape { public double Area() => 0; } class Circle : Shape { public double Radius; public Circle(double radius) { Radius = radius; } public double Area() => Math.PI * Radius * Radius; // neither override nor new } Representative compiler warning (build still succeeds): Program.cs(11,19): warning CS0114: 'Circle.Area()' hides inherited member 'Shape.Area()'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword. Explanation: The compiler recognizes that Circle.Area() has the exact same signature as an inherited member, Shape.Area(), and that the programmer hasn't stated an intent either way (override it, or deliberately hide it with new). Rather than refusing to compile, C# treats this as a warning only -- the build succeeds, and the program runs using method-hiding semantics implicitly, exactly as if `new` had been written. The code behaves identically to Challenge 2's explicit `new` version; the only difference is the compiler nags about it instead of silently accepting it, unlike an explicit `new` which suppresses the warning entirely. This is precisely why the chapter's warn-box calls this a real, easy-to-miss gotcha: nothing stops the program from compiling and running with unintended method-hiding behavior if warnings aren't being read carefully. WHY THIS WORKS AS AN ANSWER ------------------------------ This reproduces the exact CS0114 warning text and confirms the build still succeeds despite it, directly supporting the chapter's own claim that omitting override/new is a warning, not a compile error, and that the resulting behavior is method hiding by default.