ダウンキャストとは
サブクラスのオブジェクトにスーパークラスのオブジェクトを格納すること。
ダウンキャストの失敗
instance of を用いてインスタンスを代入できるか確認すればいいのですが、確認しなくてもわかればいいなと思い自分なりの解釈を備忘録として書くことにしました。
実際にコードにしてみると....
NGパターン(ダウンキャスト)
public class Human {
public void speak (){
System.out.println("アイウエオ");
}
}
public class Men extends Human {
public void speak (){
System.out.println("かきくけこ");
}
}
public class Main {
public static void main void (String [] args){
Human h = new Human();
Men M = (Men) h;
}
}
この場合はHumanはMenの内容を知らないのでダウンキャストができない。
しかし以下の場合だと(Mainクラスを編集)
public class Main {
public static void main void (String [] args){
Human h = new Men();
Man m = (Man) h;
}
}
MenはHumanの内容を知っているのでダウンキャストができる。