A class defines the data and behavior of a type by grouping together variables, methods, and events. It supports encapsulation by allowing fields and methods to be declared as instance or static members. A class is declared using the class keyword followed by the class name and body surrounded by curly braces. Objects are instances of a class that can access members using the dot operator. Constructors are special methods that initialize an object when created with the new operator.