Creating an object is not difficult; you do so using the keyword new . Is that the extent of creating an object? What about creating an object based on a dynamic program condition? How about creating an object based on some administrative configuration files? In each of these situations, you cannot use the keyword new because you don't know which class to instantiate. The task of this chapter is to outline the different ways to instantiate a class depending on common scenarios that a programmer will encounter.