システムで扱われるデータの設計をしていると、「細部は異なるけれども、共通する部分を持つ」一連のバリエーションと呼べるものが出てくることが多々あります。 例えば、ある物販システムが扱う商品に、「食品」「衣料」「書籍」という区分があったとして、それぞれが次のようなデータ構造を持つとしましょう。 食品 商品ID, 名称, 取扱業者ID, 価格, 内容量, 消費期限, 品切れフラグ 衣料 商品ID, 名称, 取扱業者ID, 価格, サイズ下限, サイズ上限, 品切れフラグ 書籍 商品ID, 名称, 著者名, ISBN, 取扱業者ID, 価格, 品切れフラグ こうしたデータ型をオブジェクト指向プログラミング言語で扱う場合、まず共通する属性をまとめて「商品」を表す抽象クラスとして定義し、これを継承して「食品」「衣料」「書籍」を表す具象クラスを定義するのが一般的なやり方です。 //商品 class Pr