基本情報技術者試験 練習問題 9:カプセル化とアクセス修飾子
オブジェクト指向設計におけるカプセル化について述べた文として、正しいものはどれか。
- カプセル化とは、クラスのすべての属性をpublicで宣言し、外部から直接アクセスできるようにすることである。
- カプセル化により、クラス内部の実装を隠蔽し、インターフェースを通じたアクセスのみを許可することで保守性を向上させる。
- privateで宣言された属性はサブクラスからもアクセスできず、サブクラスでカスタマイズできない。
- protectedで宣言された属性は同一パッケージ内からしかアクセスできない。
- カプセル化はオブジェクト指向では任意の機能であり、選択的に使用できる。
正解と解説を見る
正解:カプセル化により、クラス内部の実装を隠蔽し、インターフェースを通じたアクセスのみを許可することで保守性を向上させる。
オブジェクト指向設計における重要な原則の一つがカプセル化です。
カプセル化(Encapsulation)とは、クラスの内部状態(属性)と振る舞い(メソッド)を組み合わせて、外部からの直接アクセスを制限する設計手法です。
アクセス修飾子の役割:
public:クラスの外部からも、パッケージ外からもアクセス可能。
private:同じクラス内からのみアクセス可能。サブクラスからもアクセスできません。
protected:同じクラス内とサブクラス、同じパッケージ内からアクセス可能。
package private(修飾子なし):同じパッケージ内からのみアクセス可能。
正しいのは「カプセル化により、クラス内部の実装を隠蔽し、インターフェースを通じたアクセスのみを許可することで保守性を向上させる」です。
例えば、プライベート属性に対してgetterメソッドとsetterメソッドを提供することで、内部実装を変更してもクライアント側のコードには影響しません。これにより、拡張性と保守性が向上します。カプセル化はオブジェクト指向の基本的な原則であり、推奨される実装方法です。