回答編集履歴

1

キャストした場合の結果の説明を追加

2020/03/21 23:37

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -61,3 +61,49 @@
61
61
 
62
62
 
63
63
  Painapple(苦痛のリンゴ) は Pineapple(パイナップル)にして欲しかった。
64
+
65
+
66
+
67
+ **追記**
68
+
69
+ fruits.name = "Gold"; を
70
+
71
+ ((Painapple)fruits).name = "Gold" に変更すると、
72
+
73
+ ・Painapple の name = "Gold"
74
+
75
+ なぜなら、main の fruits は Fruitsへの参照型であるが、それを
76
+
77
+ Painappleへの参照型にキャストしたので、「Painapple の name」になるから。
78
+
79
+ 最後の println で "Gold" が表示される。
80
+
81
+
82
+
83
+ また、fruits.fruits.name = "SnackPine" を
84
+
85
+ ((Painapple)fruits.fruits).name = "SnackPine" に変更すると、
86
+
87
+ ・Painapple の name = "SnackPine"
88
+
89
+ なぜなら、fruits.fruits は static の fruits であり、これは Fruitsへの
90
+
91
+ 参照型であるが、それを Painappleへの参照型にキャストしたので、
92
+
93
+ 「Painapple の name」になるから。
94
+
95
+ 最後の println で "SnackPine" が表示される。
96
+
97
+
98
+
99
+ ところが、fruits.fruits.name = "SnackPine" を
100
+
101
+ ((Painapple)fruits).fruits.name = "SnackPine" に変更すると、
102
+
103
+ ・Fruits の name = "SnackPine"
104
+
105
+ なぜなら、main の fruits を Painappleへの参照型にキャストしても Painappleの
106
+
107
+ fruits は「static の fruits」であり、それは Fruits への参照型だから。
108
+
109
+ 最後の println で null が表示される。