Help us understand the problem. What is going on with this article?

ダウンキャストの話(備忘録)

More than 1 year has passed since last update.

ダウンキャストとは

サブクラスのオブジェクトにスーパークラスのオブジェクトを格納すること。

ダウンキャストの失敗

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の内容を知っているのでダウンキャストができる。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away