回答編集履歴
1
キャストした場合の結果の説明を追加
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 が表示される。
|