O encapsulamento dos dados é um mecanismo utilizado para reunir os dados e os métodos numa estrutura que pode esconder a implementação do objeto, ou seja, ele impede o acesso aos dados por um meio diferente dos serviços propostos. A encapsulação garante, desta maneira a integridade dos dados contidos no objeto.
O utilizador de uma classe não tem necessariamente de saber como estão estruturados os dados no objecto, isto significa que um utilizador não tem de conhecer a aplicação. Assim, proibindo o usuário de alterar diretamente os atributos, e obrigando-o a utilizar as funções definidas para alterá-los (chamadas interfaces), podemos garantir a integridade dos dados (por exemplo garantir que o tipo dos dados fornecido está conforme ao desejado, ou ainda que os dados se encontram no intervalo esperado).
O encapsulamento permite definir os níveis de visibilidade dos elementos da classe. Estes níveis de visibilidade definem os direitos de acesso aos dados conforme acessemos um método da própria classe, de uma classe herdada, ou de uma classe qualquer. Existem três níveis de visibilidade: pública onde as funções de todas as classes podem acessar os dados ou os métodos de uma classe definida com o nível público de visibilidade, tratando-se do nível de proteção de dados mais baixo de proteção; protegida onde o acesso aos dados está reservado às funções das classes herdadas, ou seja, às funções membros da classe, bem como às classes derivadas; privadacom o acesso aos dados é limitado aos métodos da própria classe, trata-se do nível de proteção dos dados mais elevado.