Two methods provided by the initial object object are
super/1 and sub/1. (Note that any definition of
super/1, except the one in object, is transformed to
super/2). super/1 if sent to an object will return the
immediate parents of the object. sub/1 will return the immediate
children of the object if any. It is important to note that this service
is provided only for objects that have object as their initial
ancestor.
| ?- john :: super(S), S :: sub(john).
S = sportsman ;
S = professor ;
no
The sub/1 property allows programs to traverse object
hierarchies from a root object object down to the leaves.