カプセル化は、関連付けられた複数の項目から成るグループを包含し、グループへのアクセスを制御する機能です。クラスは、項目をカプセル化する最も一般的な方法の 1 つです。下の例の BankAccount クラスは、銀行の口座を表すメソッド、フィールド、およびプロパティをカプセル化します。
カプセル化を使用しない場合、たとえば、銀行口座の情報を保持および管理するためのプロシージャや変数を個別に宣言する必要があります。この方法では、一度に複数の口座を処理するのは困難です。カプセル化を使用すると、データおよびプロシージャを BankAccount クラスにまとめ、1 つのユニットとして扱うことができます。各口座はクラスの一意のインスタンスで表現されるため、混乱することなく、一度に複数の銀行口座を処理できます。
カプセル化により、データとプロシージャの使用も制御できます。Private や Protected などのアクセス修飾子を使用することで、外部のプロシージャによるクラスのメソッドの実行や、プロパティやフィールドのデータの読み取りおよび変更を禁止できます。クラスの外部で使用されるのを防ぐためには、クラスの内部的な詳細を Private として宣言しておく必要があります。この技法は、データの隠ぺいと呼ばれ、口座残高などの顧客情報を保護するための方法です。
カプセル化の基本的な規則として、クラス データは Property プロシージャまたはメソッドだけを通じて変更または取得します。クラスの実装の詳細を隠ぺいすることで、望まない方法でクラスが使用されるのを防ぎます。また、互換性の問題を発生させることなく、後でこれらの項目を変更できます。たとえば、BankAccount クラスの将来のバージョンでは、AccountBalance フィールドのデータ型に依存する他のアプリケーションに影響を与えることなく、このフィールドのデータ型を変更できます。