汎化・特化(オブジェクト指向)とは?はんか・とっか
汎化・特化(オブジェクト指向)とは、上位と下位のクラスを結ぶ関係のうち、下位が上位の一種であること(is-a関係)を表すもの。複数のクラスに共通する性質をくくり出して上位側へ置くのが汎化、そこから個別の性質を加えた側へ下るのが特化にあたる。部分と全体を表す集約(has-a関係)とは、そもそも別の種類の関係である。
最終更新:2026-10-06
プロジェクトマネージャを最短で暗記・合格する →背景
似た処理を持つクラスを並べて作ると、共通部分の修正が全部に散り、直し漏れが必ず出る。共通を上位へ引き上げて一箇所にまとめる関係を型として持たせたのがオブジェクト指向の設計で、UMLはこれを白抜き三角の矢印で書き分ける。PMの立場では、設計レビューで構造の妥当性を読み、保守性の議論に加わるための語彙になる。
具体例
Javaの標準ライブラリでは、FileInputStreamやByteArrayInputStreamの共通部分がInputStreamとして上位に置かれている。読み取りの操作を上位で決め、どこから読むかだけを下位が実装する形になっている。
試験での引っ掛け
「全体と部分」は集約・コンポジションであり、汎化と取り違えさせる設問が定番。矢印の向きも逆になりやすく、汎化は下位から上位(一般側)へ向く。共通コードをまとめたいという理由だけで継承を使うと、is-aが成り立たない構造になる点も注意。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。