抽象型
Swiftの「拡張」はObjective-Cの「カテゴリ」に似た言語機能であり、既存の型に対して変更を加えることなく機能を追加することができる。ただし、プロトコル自身は依然として実装や状態を持つことはできない。
トレイト(Mix-inでの機能)
トレイトが抽象型に当たるのかは諸説分かれる。トレイトは構造的型付け(英語版)に準拠しており、その本質は、クラスに機能注入するためのメソッドの集合体だからである。これをRubyはモジュールと呼び、Rakuはロールと呼んでいる。トレイトはSmalltalk処理系由来であり、Mix-inの作法もヒントになっていた。
多重継承前提のトレイトは、主に関数型を取り入れたオブジェクト指向言語で様々に解釈されるようになり、その中にはインタフェースとの類似形もあったので、これが抽象型と見なされる一因になっている。
型クラス(アドホック多相由来のジェネリック・サブタイピング)
元々の型クラスは純粋関数型言語で、関数のパラメータ型に制約(constraint)を付加して関数オーバーロードを可能にするための手段であり、そのオーバーロードをジェネリック化していた。制約の付加はアドホック多相と解釈された。その制約を、サブタイピングされるジェネリック抽象型にしてデータクラスやレコード型や構造体に継承できるようにしたものが、オブジェクト指向言語で言われる型クラスになっている。