The five basic concepts of object-oriented design are the implementation level features that are built into the programming language. These features are often referred to by these common names:
- Object/Class: A tight coupling or association of data structures with the methods or functions that act on the data. This is called a class, orobject (an object is created based on a class). Each object serves a separate function. It is defined by its properties, what it is and what it can do. An object can be part of a class, which is a set of objects that are similar.
- Information hiding: The ability to protect some components of the object from external entities. This is realized by language keywords to enable a variable to be declared as private or protected to the owning class.
- Inheritance: The ability for a class to extend or override functionality of another class. The so-called subclass has a whole section that is derived (inherited) from the superclass and then it has its own set of functions and data.
- Interface (object-oriented programming): The ability to defer the implementation of a method. The ability to define the functions or methodssignatures without implementing them.
- Polymorphism (specifically, Subtyping): The ability to replace an object with its subobjects. The ability of an object-variable to contain, not only that object, but also all of its subobjects.