Many programming languages support the concept of Object-Oriented Programming (OOP). OOP is a methodology that couples data (variables) and logic (functions) into one cohesive unit (object). While Lua is not an object-oriented language, it does provide all the facilities to allow us to implement an object system.
The class is a core construct in OOP. The class is a single template from which multiple objects can be built. A common analogy is to compare a class to the blueprint of a house. The blueprint defines the dimensions and layout of a house, and many houses can be produced from a single blueprint.
Even though many houses can be made from the same blueprint, they are independent of each other. If one home owner adds a room to a house, it will not affect any other houses. But, if a room is added to the blueprint of that house, all future houses will have that room...