This documentation is archived and is not being maintained.

Inheritance (C# Programming Guide)

Classes can inherit from another class. This is accomplished by putting a colon after the class name when declaring the class, and naming the class to inherit from—the base class—after the colon, as follows:

public class A
    public A() { }

public class B : A
    public B() { }

The new class—the derived class—then gains all the non-private data and behavior of the base class in addition to any other data or behaviors it defines for itself. The new class then has two effective types: the type of the new class and the type of the class it inherits.

In the example above, class B is effectively both B and A. When you access a B object, you can use the cast operation to convert it to an A object. The B object is not changed by the cast, but your view of the B object becomes restricted to A's data and behaviors. After casting a B to an A, that A can be cast back to a B. Not all instances of A can be cast to B—just those that are actually instances of B. If you access class B as a B type, you get both the class A and class B data and behaviors. The ability for an object to represent more than one type is called polymorphism. For more information, see Polymorphism (C# Programming Guide). For more information on casting, see Casting (C# Programming Guide).

Structs cannot inherit from other structs or classes. Both classes and structs can inherit from one or more interfaces. For more information, see Interfaces (C# Programming Guide)