現在、JavaプログラマSilver SE8 (通称:紫本)で勉強しております。
どうにか調べたりし、理解しながら頑張っていたのですが、どうしても分からないことがありました。
次が問題のプログラムになります。
html
1public class AnimalCreator { 2 public static void main(String[] args) { 3 Animal[] animals = {new Animal(), new Cow()}; 4 for(Animal a : animals) { 5 Animal x = a.getAnimal(); 6 System.out.println(x); 7 } 8 9 } 10} 11 12class Animal{ 13 Animal getAnimal() { 14 return new Animal(); 15 } 16} 17 18class Cow extends Animal{ 19 Cow getAnimal() { 20 return new Cow(); 21 } 22}
この問題では、私の解釈では、for文の中の
Animal x = a.getAnimal();
というところで、リターンが返ってくるので、
Animal x = new Animal();
Animal x = new Cow();
という状態になっているのではないかと考えております。
もし、これがあっているとするなら、System.out.println(x)のxにはオブジェクトが入るということでしょうか?
オブジェトを文字として表示・・というのはどういうことなのでしょうか・・・。
書籍の回答には問題ありませんとだけ書いてあり、詳しい内容は書いてありませんでした。
よろしくお願い致します。
どういう実行結果になるかは確認されているのでしょうか?
実行結果について確認できておりません。
実行結果と、解説を頂ければ・・と思っております。
オンラインの実行環境でもなんでも使って、まずは一度自分の手で実行してみてはいかがでしょうか?
https://repl.it/languages/java
ところで、タイトルでは「継承について」と書いてありますが、質問したいことは「System.out.println(x)のxにはオブジェクトが入るということでしょうか?」なのでしょうか?
タイトルと質問が一致していないのが気になりました。
コメントありがとうございます。
オンラインの実効環境というものがあることを初めて知りました。
これから利用していこうと思います。
質問とタイトルはあとから編集可能ですよ。
回答5件
あなたの回答
tips
プレビュー