Object-oriented programming uses classes and objects to model real-world items. Classes allow for the creation of objects that encapsulate both data and functions that can act on that data. OOP also supports method overloading which allows methods of the same name to be defined with different parameters.