Why does the arrow go up in inheritance?

In UML the arrow is called a "Generalization" relationship and it only signals that each object of class Derived is also an object of class Base.

From the superstructure 2.1.2:

A Generalization is shown as a line with a hollow triangle as an
arrowhead between the symbols representing the involved classifiers.
The arrowhead points to the symbol representing the general 
classifier. This notation is referred to as the “separate target style.”

Not really an answer though to the question :-)


Read the arrow as "inherits from" and it makes sense. Or, if you like, think of it as the direction calls can be made.


AFAIK one of the reasons is notational consistency. All other directed arrows (dependency, aggregation, composition) points from the dependant to the dependee.

In inheritance, B depends on A but not vice versa. Thus the arrow points from B to A.