/* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110 */ /* Example8_8.cs illustrates interface member hiding */ using System; // define the IDrivable interface public interface IDrivable { void TurnLeft(); } // define the ISteerable interface (derived from IDrivable) public interface ISteerable : IDrivable { new void TurnLeft(); // hides TurnLeft() in IDrivable } // Car class implements the IMovable interface class Car : ISteerable { // explicitly implement the TurnLeft() method of the ISteerable interface void ISteerable.TurnLeft() { Console.WriteLine("ISteerable implementation of TurnLeft()"); } // implement the TurnLeft() method of the IDrivable interface public void TurnLeft() { Console.WriteLine("IDrivable implementation of TurnLeft()"); } } public class Example8_8 { public static void Main() { // create a Car object Car myCar = new Car(); // call myCar.TurnLeft() Console.WriteLine("Calling myCar.TurnLeft()"); myCar.TurnLeft(); // cast myCar to ISteerable ISteerable mySteerable = myCar as ISteerable; Console.WriteLine("Calling mySteerable.TurnLeft()"); mySteerable.TurnLeft(); // cast myCar to IDrivable IDrivable myDrivable = myCar as IDrivable; Console.WriteLine("Calling myDrivable.TurnLeft()"); myDrivable.TurnLeft(); } }