オブジェクト指向の三大原則:カプセル化・継承・ポリモーフィズムを理解する
オブジェクト指向プログラミングの基本であるカプセル化、継承、ポリモーフィズムについて、その概念と実践方法をわかりやすく解説します。
ソフトウェア開発において、オブジェクト指向(OOP:Object-Oriented Programming)は、複雑なシステムを整理しやすく、再利用性の高い設計を可能にする考え方です。
その中核をなす「三大原則」が、**カプセル化・継承・ポリモーフィズム(多態性)**です。
この記事では、それぞれの原則の意味とメリット、簡単な実装例を通して解説していきます。
カプセル化(Encapsulation)
カプセル化とは?
カプセル化とは、「データ(変数)と、それを操作する処理(メソッド)を1つの単位にまとめ、外部からの直接アクセスを制限すること」です。
内部の実装を隠し、必要な操作だけを公開することで、データの保護や安全性を高めます。
メリット
- オブジェクトの内部状態を外部から守れる(データの保護)
- 実装の変更が外部に影響しにくくなる(保守性向上)
- オブジェクトの使い方が明確になる(インターフェースの明示)
実装例(Python)
python CopyEdit class BankAccount: def __init__(self, balance): self.__balance = balance # 外部から直接アクセスできない def deposit(self, amount): self.__balance += amount def withdraw(self, amount): if amount <= self.__balance: self.__balance -= amount def get_balance(self): return self.__balance
継承(Inheritance)
継承とは?
継承とは、既存のクラス(親クラス)の機能を、新しいクラス(子クラス)に引き継ぐ仕組みです。
共通部分を親クラスにまとめ、個別の違いを子クラスで追加することで、コードの再利用性と構造の明確化が可能になります。
メリット
- コードの重複を削減できる
- 共通処理を親クラスにまとめることで、修正もしやすくなる
- 「is-a(〜である)」関係を表現できる
実装例(Python)
python CopyEdit class Animal: def speak(self): print("Some sound") class Dog(Animal): def speak(self): print("Woof!") class Cat(Animal): def speak(self): print("Meow!")
ポリモーフィズム(Polymorphism)
ポリモーフィズムとは?
ポリモーフィズムとは、「同じ操作(メソッド名)でありながら、異なるオブジェクトが異なる振る舞いをすること」を指します。
これは、継承やインターフェースを利用して、共通のインターフェースで異なる実装を提供できる柔軟性を意味します。
メリット
- 同一インターフェースで処理できるため、コードがシンプルになる
- 拡張がしやすく、オープン・クローズドの原則にも合致する
- 実装の詳細を気にせず処理を記述できる(抽象度が高い)
実装例(Python)
python CopyEdit def make_it_speak(animal): animal.speak() dog = Dog() cat = Cat() make_it_speak(dog) # Woof! make_it_speak(cat) # Meow!
まとめ
オブジェクト指向の三大原則である「カプセル化・継承・ポリモーフィズム」は、それぞれ以下のような役割を担っています:
- カプセル化:データと処理の一体化、外部からの保護
- 継承:コードの再利用、階層構造の表現
- ポリモーフィズム:柔軟なインターフェースと拡張性の確保
これらの原則を理解し、実践に取り入れることで、保守性・再利用性・拡張性に優れたソフトウェア設計が可能になります。
はじめは1つずつ意識するところから、徐々に複合的に活用できるようになると、オブジェクト指向の真価が実感できるようになるでしょう。

編集部