Object-oriented programming focuses on using objects to design and build applications. An object is an instance of a class that bundles related state and behavior. A class is a blueprint or prototype from which objects are created. Inheritance allows a subclass to inherit characteristics from an existing superclass. Scala allows creating objects from classes and also defines companion objects and traits.