Overloading can greatly simplify applications, since it allows the same name to be used
for the same operation irrespective of what class it appears in, thereby allowing context
to determine which meaning is appropriate at any given moment. This saves having to
provide unique names for methods such as printBranchDetails or printStaffDetails for what is
in essence the same functional operation.