キャスト

型を変換できます

プログラミングの世界では「キャスト」というものがあります。これはデータの型変換のことを言います。例えば数字の32ビット表現のint型と64ビットのlongを型変換するには次のようになります。

基本的に型変換は関数が用意されているので、これを使えば変換できます。キャストはそんな手続きなしで変換できるので便利です。さらにプログラミング言語によっては明示的にキャストしなくとも自動で判断してくれる場合もあります。しかし、さすがに数値と文字列の変換はキャストではできません。関連性の高い型同士(数値なら数値の型たち)ならできるのです。では、クラスではどうでしょうか?

クラスのキャスト

継承関係があるクラスではキャストが可能です。具体的には、サブクラスからスーパークラスは可能。スーパークラスからサブクラスは不可能。ただし、サブクラスからスーパークラスにキャストし、それをサブクラスにキャストする場合は可能です。

Super Sub
Sub
Super ×
Sub⇒Super

スーパークラス、サブクラスに同じ変数、メソッド名が存在している場合は、優先されるルールがあります。サブクラスをスーパークラスにキャストした場合は、変数はスーパークラス、メソッドはサブクラスが優先されます。スーパークラス(サブクラスからキャストしたモノ)からサブクラスにキャストした場合は、サブクラスの変数、メソッドが優先されます。

Super Sub
変数 メソッド 変数 メソッド
Sub⇒Super
Sub⇒Super⇒Sub 

参考のソースコードと実行結果を掲載します。

クラスでキャストできるなんて、凄いですね!「で、なんの意味があるの?」、ごもっともです。クラスのキャストが活躍する場面については後述します。

タイトルとURLをコピーしました