「Java」親子クラスの明示的にダウンキャスト(downcast)をするサンプル
書式
子クラス オブジェクト名A =(子クラス)親クラスのオブジェクト名B
使用例
package com.arkgame.study;
// 親クラス
class ParentCftA {
public String testA() {
return "Parent A001";
}
}
// 子クラス
class ParentCftB extends ParentCftA {
public String testB() {
return "Child B002";
}
}
public class ParentObjMeiji {
public static void main(String[] args) {
// 子クラスを生成して親クラスの変数名に格納
ParentCftA pta = new ParentCftB();
// 子クラスの型の変数にダウンキャストを行う
ParentCftB ptb = (ParentCftB) pta;
System.out.println("result1: " + ptb.testA());
System.out.println("result2: " + ptb.testB());
}
}
package com.arkgame.study;
// 親クラス
class ParentCftA {
public String testA() {
return "Parent A001";
}
}
// 子クラス
class ParentCftB extends ParentCftA {
public String testB() {
return "Child B002";
}
}
public class ParentObjMeiji {
public static void main(String[] args) {
// 子クラスを生成して親クラスの変数名に格納
ParentCftA pta = new ParentCftB();
// 子クラスの型の変数にダウンキャストを行う
ParentCftB ptb = (ParentCftB) pta;
System.out.println("result1: " + ptb.testA());
System.out.println("result2: " + ptb.testB());
}
}
package com.arkgame.study; // 親クラス class ParentCftA { public String testA() { return "Parent A001"; } } // 子クラス class ParentCftB extends ParentCftA { public String testB() { return "Child B002"; } } public class ParentObjMeiji { public static void main(String[] args) { // 子クラスを生成して親クラスの変数名に格納 ParentCftA pta = new ParentCftB(); // 子クラスの型の変数にダウンキャストを行う ParentCftB ptb = (ParentCftB) pta; System.out.println("result1: " + ptb.testA()); System.out.println("result2: " + ptb.testB()); } }
実行結果
result1: Parent A001
result2: Child B002