≪Java≫ クラス型のキャスト

≪Java≫ クラス型のキャスト

 【悪い例』
  class Animal {}

  class Dog extends Animal{}

  class Tiwawa extends Dog{
   void name(){
    System.out.println(“Wan”);
   }
  }

public class Use {
 public static void main(String[] args) {
    Animal ani = new Animal();
    Dog dog = (Dog)ani; ←スーパークラスのオブジェクトはダウンキャストできないので、コンパイルは成功するが、実行時エラーが発生する
    Tiwawa tiwa = (Tiwawa)dog;

    tiwa.name();
    }
   }

 【良い例』
  class Animal {}

  class Dog extends Animal{}

  class Tiwawa extends Dog{
   void name(){
    System.out.println(“Wan”);
   }
  }

public class Use {
 public static void main(String[] args) {
    Animal ani = new Dog(); ←この時点でダウンキャストしたい型でオブジェクトを生成
    Dog dog = (Dog)ani; ←ダウンキャスト

    Dog dog2 = new Tiwawa(); ←この時点でダウンキャストしたい型でオブジェクトを生成
    Tiwawa tiwa = (Tiwawa)dog2; ←ダウンキャスト

    tiwa.name();
    }
   }



引っ越し前の記事
シェアする
senをフォローする
プレミア商品・お得商品情報局(予約・再販情報も)


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