アップキャスト【upcasting】

概要

アップキャストとはオブジェクト指向プログラミングにおける型変換の一種で、サブクラス(子クラス/派生クラス)のインスタンススーパークラス(親クラス/基底クラス)の型として扱う操作のこと。継承関係の下位から上位へ向かう変換であり、型の安全性が保証されることから暗黙的に行われることが多い。
アップキャストのイメージ画像

あるデータ型の変数を別の型に変換する操作を型変換キャスト)と呼ぶ。オブジェクト指向言語では、クラスから生成されたインスタンスについても同様の変換が可能であり、継承関係にあるクラス間で上下いずれかの方向へのキャストを行うことができる。

サブクラススーパークラスの属性やメソッドをすべて継承しているため、サブクラスインスタンスは必ずスーパークラスの仕様を満たしている。この性質から、アップキャストは型安全な変換とみなされ、Javaなど多くの言語では明示的なキャスト演算子を記述しなくても自動的に処理される。変換によってオブジェクト自体が変化するわけではなく、変数や参照がスーパークラスの型として扱われるようになるだけである。

アップキャスト後のインスタンスでは、スーパークラスで定義されたメンバーのみが利用可能となり、サブクラス固有のメソッドや属性には直接アクセスできなくなる。ただし、サブクラススーパークラスメソッドオーバーライドしている場合、実行時にはサブクラスの実装が呼び出される。これは「ポリモーフィズム」(多態性)の仕組みによるものであり、例えば、異なるサブクラスインスタンススーパークラス型の配列にまとめ、共通のメソッドを一括して呼び出すといった用途で利用される。

逆に、スーパークラス型のインスタンスサブクラスの型へ変換することを「ダウンキャスト」(downcasting)と呼ぶ。スーパークラスインスタンスサブクラスの仕様を満たしている保証はないため、明示的な変換操作が必要となる。実際のオブジェクトの型と変換先の型が一致しない場合は実行時に例外やエラーが発生する。JavaやC#ではinstanceof演算子やis演算子で型を事前に確認してからダウンキャストを行う手法が一般的である。

(2026.6.15更新)
 

他の辞典等による「アップキャスト」の解説 (外部サイト)

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