第8章 クラス型の変換とキャスト (Java)
(参照の)クラス型の自動型変換
- 自動型変換は同じ継承ツリーの中に限る。
- 継承ツリーの→の向き(スーパークラス←サブクラス)にのみ自動型変換される。
- 参照のクラス型が変換されても、オブジェクトの型は、不変である。
- 型変換された参照からは、オブジェクトのそのクラスに相当する部分だけ参照できる。
(参照がアクセスできるオブジェクトの範囲は変数の型によって決まる)
instanceof 演算子
- 変数が参照するオブジェクトの型は、変数の型かそのサブクラス型である。
- instanceof演算子は 変数 instanceof 型 という形で使う。
- 変数が参照するオブジェクトの本当の型は指定の型か又は、そのサブクラスであるかどうかを調べることができる。
- instanceof演算子は、IS-A関係(同じあるいは継承している)を調べる。
ダウンキャスト
- 継承ツリーの←と逆向きの変換は無条件にコンパイルエラーになる。
- 型変換したい場合は、ダウンキャストできる。
- 継承ツリーの中ではダウンキャストは、決してコンパイルエラーにはならないので、オブジェクト型に注意して行う。
クラス型の引数と戻り値
- 参照の自動型変換は、メソッドの引数型や戻り値型にも適用される。