There's a diversity of approaches. Self uses prototype delegates. The language I learned on (LambdaMOO) has a single-delegate ("parent") model. There have been research languages that used pure concatenation. And even ones that had early binding and static types.
This book (2003) has a good summary of the space:
http://www.amazon.com/Prototype-Based-Programming-Concepts-L...
There's a diversity of approaches. Self uses prototype delegates. The language I learned on (LambdaMOO) has a single-delegate ("parent") model. There have been research languages that used pure concatenation. And even ones that had early binding and static types.