Components can exhibit a range of different behaviors.
When an application uses a component it must have some way of specifying the desired behavior. The component supplier has no way of knowing exactly how a particular component will end up being used and is therefore incapable of specifying the behavior. One way to control the behavior is at run-time. The application creates an instance of a button object, and then instructs this object to display either text or a picture. No special effort by the application developer is required, since a button can always support all desired behaviors.