Cada clase es un modelo que define un conjunto de variables y métodos apropiados para operar con dichos datos.
Los datos pueden estar almacenados en variables, o estructuras más complejas, como structs, uniones e incluso otras clases.
Habitualmente, las variables miembro son privadas al objeto (siguiendo las directrices de diseño del Principio de ocultación) y su acceso se realiza mediante propiedades o métodos que realizan comprobaciones adicionales.
Debido a que suele ser común que las variables miembro sean privadas para controlar el acceso y mantener la coherencia, surge la necesidad de permitir consultar o modificar su valor mediante pares de métodos.
Los lenguajes orientados a objetos más modernos añaden la construcción de propiedad, que es una sintaxis simplificada para dichos métodos.