L’incapsulamento è la chiave della programmazione orientata agli oggetti. Tramite esso, una classe riesce ad acquisire caratteristiche di robustezza, indipendenza e riusabilità. Inoltre la sua manutenzione risulterà più semplice al programmatore. Una qualsiasi classe è essenzialmente costituita da dati e metodi. La filosofia dell’incapsulamento è semplice. Essa si basa sull’accesso controllato ai dati mediante metodi che possono prevenirne l’usura e la non correttezza dei dati stessi. A livello di implementazione, ciò si traduce nel dichiarare privati i membri di una classe e quindi inaccessibili al di fuori della classe stessa (a tale scopo esiste il modificatore private). Allora, l’accesso ai dati, potrà essere fornito da un’interfaccia pubblica costituita da metodi dichiarati public, e quindi accessibili da altre classi. In questo modo, tali metodi potrebbero ad esempio permettere di realizzare controlli prima di confermare l’accesso ai dati privati. Se l’incapsulamento è gestito in maniera intelligente, le nostre classi potranno essere utilizzate nel modo migliore e più a lungo, giacché le modifiche e le revisioni potranno riguardare solamente parti di codice non visibili all’esterno. Se volessimo fare un esempio basandoci sulla realtà che ci circonda, potremmo prendere in considerazione un telefono. La maggior parte degli utenti, infatti, sa utilizzare il telefono, ma ne ignora il funzionamento interno. Chiunque infatti, può alzare la cornetta, comporre un numero telefonico, e conversare con un’altra persona, ma pochi conoscono in dettaglio la sequenza dei processi scatenati da queste poche, semplici azioni. Evidentemente per utilizzare il telefono, non è necessario essere un tecnico: basta conoscere la sua interfaccia pubblica, non la sua implementazione interna.