読み方 : ちゅうしょうがた
抽象型【abstract type】
概要

抽象型では、データの格納方法や処理の具体的な手順ではなく、どのような操作が可能か、どのような振る舞いをするかを定義する。抽象型自体は実装を定義しないため、そのものから直接インスタンスを作ることはできず、必ず具体的な内容を書き加えた「具象型」が必要となる。
例えば、スタックやキューといったデータ構造を実装したオブジェクトには要素の追加や取り出しといった操作が定義されるが、これを配列で実装するか連結リストで実装するかといった詳細は抽象型には反映されず、ただ外部から見たデータ構造や操作法のみが定義される。
この考え方は、プログラムの保守性や再利用性を高めるために重要である。利用者は抽象型で定められた操作の仕方に従って使用するだけでよく、内部実装が変更されても外部インターフェースが変わらなければ影響を受けにくい。また、新しい具体的な型を追加する際、既存の抽象型のルールに従って作成すれば、他の部分を修正することなく新機能を組み込むことができる。
抽象型には、具象型の開発者に対して「このメソッドを必ず実装しなさい」と仕様を強制する役割もある。大規模な開発において、複数の人間が分担して作業を進める際、抽象型が共通の規格として機能することで、部品同士の組み合わせミスを防ぎ、堅牢なシステムを構築することができる。
プログラミング言語によって抽象型に相当する仕様の名称や詳細は異なっている。JavaやC#では「インターフェース」や「抽象クラス」が、C++言語では「仮想関数」および「純粋仮想関数」を含むクラスが、Objective-CやSwiftでは「プロトコル」が抽象型に相当する機能を提供する。