Polymorphism is available not only via inheritance (as discussed in the previous chapter), but also via interfaces. Unlike abstract classes, interfaces cannot include any implementation. Like abstract classes, however, interfaces define a set of members that classes can rely on in order to support a particular feature.
By implementing an interface, a class defines its capabilities. The interface implementation relationship is a "can do" relationship: The class can do what the interface requires. The interface defines the contract between the classes that implement the interface and the classes that use the interface. Classes that implement interfaces define methods with the same signatures as the implemented interfaces. This chapter discusses defining, implementing, and using interfaces.