This chapter examined how to code inheritance in C#. You have seen that C# offers rich support for both multiple interface and single implementation inheritance, as well as provides a number of useful syntactical constructs designed to assist in making code more robust, such as the override keyword, which indicates when a function should override a base function; the new keyword, which indicates when a function hides a base function; and the rigid rules for constructor initializers that are designed to ensure that constructors are designed to interoperate in a robust manner.