クラスのキャスト
数値型のキャストは以前ご紹介しました(型)。継承関係があるクラスでもキャストが可能です。
| 1 2 | 		Parent parent = new Child();  //Child->Parent 		Child child = (Child) parent; //Parent->Child | 
具体的には、サブクラス(継承先)からスーパークラス(継承元)は可能。スーパークラスからサブクラスは不可能。ただし、サブクラスからスーパークラスにキャストし、それをサブクラスにキャストする場合は可能です。
| ⇒ | Super | Sub | 
|---|---|---|
| Sub | ○ | – | 
| Super | – | × | 
| Sub⇒Super | – | ○ | 
スーパークラス、サブクラスに同じ変数、メソッド名が存在している場合は、優先されるルールがあります。サブクラスをスーパークラスにキャストした場合は、変数はスーパークラス、メソッドはサブクラスが優先されます。スーパークラス(サブクラスからキャストしたモノ)からサブクラスにキャストした場合は、サブクラスの変数、メソッドが優先されます。
| ー | Super | Sub | ||
| 変数 | メソッド | 変数 | メソッド | |
| Sub⇒Super | ○ | – | ○ | |
| Sub⇒Super⇒Sub | ○ | ○ | ||
なにが便利?
サブクラスが多くある場合はスーパークラスを配列にし、サブクラスをキャストして格納することがあります。配列化することでデータ処理が行いやすくなるのです。


