There are four main concepts in object-oriented programming: encapsulation, abstraction, polymorphism, and inheritance. Together, they form the four pillars of object-oriented programming. All four concepts must be present in a programming language for it to be considered a fully object-oriented programming language, like Python, Java, and Ruby. In this chapter, you will learn about each of the four pillars of object-oriented programming.