ダウンキャスト【downcasting】

概要

ダウンキャストとは、オブジェクト指向プログラミングにおいて、親クラススーパークラス/基底クラス)型として扱われているオブジェクトを、子クラスサブクラス/派生クラス)型へ変換する操作のこと。継承関係を持つクラス間の型変換のうち、クラス階層の上位から下位に向かう変換をこのように呼ぶ。
ダウンキャストのイメージ画像

オブジェクト指向言語では、子クラスインスタンスを親クラス型の変数に代入できる。例えば「動物」クラス継承した「犬」クラスがある場合、「犬」型のインスタンスを「動物」型の変数として扱うことが可能である。この状態では動物クラスで定義された機能しか利用できないが、「犬」型へダウンキャストすると、犬クラス固有のメソッドや属性にアクセスできるようになる。

これとは逆に、子クラス型を親クラス型に変換する操作は「アップキャスト」(upcasting)と呼ばれる。アップキャストは安全性が保証されているため暗黙的に処理されることが多い。一方、ダウンキャストは変換先の型が実際のオブジェクトの型と一致しない可能性があるため、明示的な記述と型確認を求められることが多い。

ダウンキャストが失敗するのは、変換先の型と実際のインスタンスの型が一致しない場合である。例えば、「動物」型の変数が「猫」のインスタンスを指しているとき、それを「犬」型へ変換しようとすると実行時にエラー(例外)が発生する。これを防ぐため、多くの言語ではダウンキャストの前にインスタンスの実際の型を確認する手段が用意されている。Javaのinstanceof演算子、C#のis演算子やas演算子がこれに当たる。

ダウンキャストは、ポリモーフィズム多態性)を活用するプログラムで用いられることがある。様々な子クラスインスタンスを共通の親クラス型として一括管理し、特定のインスタンスが持つ固有の機能にアクセスする際に、元の具体的な型へ戻すためにダウンキャストが行われる。過度に使用すると設計上の問題が生じる場合もあり、親クラスインタフェースだけで処理できる場面では型変換を行わないほうが保守性を維持しやすい。

(2026.6.1更新)
 

他の辞典等による「ダウンキャスト」の解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。