Methods allow classes to define reusable blocks of code. They can be declared with access modifiers like public or private, return types, parameters, and exceptions. Static methods can be called without an object and are used for utility functions. Constructors initialize new objects and can call other constructors through constructor chaining. Encapsulation involves making data private and accessing it through public getters and setters to control changes to an object's state. Immutable classes cannot be modified once created.