If you know something about a category of things, you automatically know some things you can transfer to other categories.
If
you know something is an animal, you take for granted that it eats, sleeps, has a way of
being born, has a way of getting from one place to another... But imagine that mammals,
amphibians and reptiles are all animals. Also cows, dogs, cats... are grouped in category
mammals. Object-orientation refers to this as inheritance.
An inheritance hierarchy in the animal kingdom |
One class (the child class or subclass)
can inherit attributes and operations from another (the parent class or superclass). The
parent class is more general then the child class.
In generalization, a child is substitutable for a parent. That is, anywhere the parent
appears, the child may appear. The reverse isn't true, however.
In UML inheritance is represented with a
line that connects the parent to a child class, and on the parent's side you put an open
triangle.
If we look from the association's side, the inheritance stands for is a kind of association.
What should analysts do to discover inheritance?
The analyst has to realize that the attributes and operations of one class are general and
apply to perhaps several other classes - which may add attributes and operations of
their
own. Another possibility is that the analyst notes that two or more classes have a number
of common attributes and operations.
Classes that provide no objects are said
to be abstract classes. You indicate an abstract class by writing its name in italics.
A
class can inherit attributes and opeartions from another class. The inheriting class is
the child of the parent class it inherits from. Abstract classes are intended only as
bases for inheritance and provide no objects of their own.