< Day Day Up > |
Often, types in a program share the same characteristics. For example, a program may contain types that represent a customer and an employee. Class Customer Public Name As String Public Address As String Public City As String Public State As String Public ZIP As String Public CustomerID As Integer End Class Class Employee Public Name As String Public Address As String Public City As String Public State As String Public ZIP As String Public Salary As Integer End Class In this situation, both the Customer and Employee classes contain a number of identical fields. This is because the two classes each describe a person, and a person has certain characteristics, such as a name and address, that exist independent of whether or not they are a customer or an employee. This commonality between the Customer type and the Employee type can be expressed through inheritance . Instead of repeating the same information in both types, you can create a class called Person that contains the common characteristics of a person. Class Person Public Name As String Public Address As String Public City As String Public State As String Public ZIP As String End Class The class Person represents all the characteristics of a person that exist independent of whether the person is a customer or an employee. Once the Person class is defined, the Customer and Employee classes can inherit all the members of the Person class. This means that the classes have to define only the members that are unique to each class. Class Customer Inherits Person Public CustomerID As Integer End Class Class Employee Inherits Person Public Salary As Integer End Class When one class inherits members from another class, the inheriting class derives from the other type. The type being derived from is called the base type . A type inherits all the members that the base type defines, including methods and events. So the Employee and Customer classes still have fields named Name , Address , City , State , ZIP , and Phone , even though they don't explicitly declare them, because they inherit them from Person . For example, the classes can be used as follows . Module Test Sub Main() Dim c As Customer = New Customer() c.Name = "John Smith" Dim e As Employee = New Employee() e.Name = "Jane Doe" End Sub End Module
A class that derives from another class can in turn be derived from by another class. For example, Employee can be further specialized by classes such as Manager and Programmer . Class Programmer Inherits Employee Public Project As String End Class Class Manager Inherits Employee Public Programmers() As Programmer End Class In this example, the Programmer class contains the members defined in its immediate base class, Employee , as well the members defined in Employee 's base class, Person . Related types can be viewed as a hierarchy with a tree structure, as in Figure 13-1. Figure 13-1. An Inheritance Hierarchy
Obviously, a type cannot directly or indirectly inherit from itself. Also, notice that the type Object is at the top of the inheritance hierarchy. If a class does not explicitly inherit from another class, it inherits from Object by default. Thus, Object is always the common root of all inheritance hierarchies. Also notice that in this type hierarchy, the most general types are at the top of the tree. As you move down the hierarchy, the classes at each level become more specialized and specific. Inheritance is a very powerful way of expressing the relationships between types. |
< Day Day Up > |