How does it work? Delegation
Given a message obj.msg(args)
If msg is defined in obj, invoke it
If not, the msg is passed on to another object that obj “delegates” to
- In some languages, there may be more than one delegate
If no delegate exists, then it’s an error