When you draw an inheritance diagram you usually go
Base
^
|
Derived
Derived extends Base. So why does the arrow go up?
I thought it means that “Derived communicates with Base” by calling functions in it, but Base cannot call functions in Derived.
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.