前提・実現したいこと
アップキャストによる参照型変数の変化が知りたい。
該当のソースコード
java
1class Person { 2 3 private String name; 4 5 public Person(String name) { 6 7 this.name = name; 8 9 } 10 11} 12 13class Student extends Person { 14 15 private String id; 16 17 public Student(String name, String id){ 18 19 super(name); 20 21 this.id = id; 22 23 } 24 25 public String getID() { return id; } 26 27} 28 29public class PolymorphismDemo6 { 30 31 public static void main(String[] args) { 32 33 Student s = new Student("Saito","s115333"); 34 35 Person h = s; //アップキャスト 36 37 if(h instanceof Student){ 38 System.out.println(((Student)h).getID());0. 番号リスト 39 } 40 41 } 42 43} 44
### 知りたいこと
参照型変数 "h" はPerson型参照変数で、それにStudent型参照変数の "s" の値を代入しているので、結局 "h" は Person型参照変数になるとの認識で正しいでしょうか? その場合、"h" が指し示すインスタンスは "s" が指し示すインスタンスと全く同じものなのでしょうか? また、"0. 番号リスト"の行についてですが、 System.out.println(h.getID()); において、何故キャストしなければならないのでしょうか? "h" は "s" と同じインスタンスを指し示しているのであれば上手く行くと思うのですがコンパイルエラーが発生します。長くなりましたがお答えいただけると幸いです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/26 06:12