Inkapsling handlar om att begränsa åtkomst till och ändring av interna data i ett objekt. Genom att skapa en ”försvarsmur” runt data, förhindras objektet från att direkt påverkas av omvärlden. Detta kan man uppnå genom att göra objektets attribut privata och endast tillgängliga via publika metoder, också kända som getter och setter metoder. En ”getter” är en metod som hämtar värdet av ett attribut, medan en ”setter” är en metod som sätter (eller ändrar) värdet.
Det är viktigt att förstå att syftet med inkapsling inte bara är att dölja data, utan att skydda den. Genom att kontrollera hur data kan nås och ändras, kan man säkerställa att endast tillåtna operationer kan utföras på objektet. Detta är särskilt viktigt om man vill undvika att programmet hamnar i ett ogiltigt eller inkonsekvent tillstånd på grund av felaktig användning av data.
Icke-inkapslade data kan orsaka buggar och problem som kan vara mycket svåra att spåra och lösa. Således är inkapsling inte bara en fråga om ren programmeringsteknik, utan också om att förenkla underhåll och felsökning av koden. Genom att tillåta endast giltiga operationer på ett objekt, minskar risken för fel. Dessutom främjar det även god kodstruktur och design genom att främja sammanhållning och minimering av beroenden mellan olika delar av programmet.