やあ!Head First Java を読んでいますが、次のコードの動作を理解できません。
public class Dog {
String name;
public static void main(String[] args) {
// make a Dog object and access it
Dog dog1 = new Dog();
dog1.bark();
dog1.name = "Bart";
// now make a Dog array
Dog[] myDogs = new Dog[3];
// and put some dogs in it
myDogs[0] = new Dog();
myDogs[1] = new Dog();
myDogs[2] = dog1;
// now acces the Dogs using the array references
myDogs[0].name = "Fred";
myDogs[1].name = "Marge";
// Hmmm... what is MyDogs[2] name?
System.out.print("last dog name is ");
System.out.println(myDogs[2].name);
// now loop through the array
// and tell all dogs to bark
int x = 0;
while (x < myDogs.length) {
myDogs[x].bark();
x = x + 1;
}
}
public void bark() {
System.out.println(name + " says Ruff!");
}
このコードによって生成される出力は次のとおりです。
null says Ruff!
last dog name is Bart
Fred says Ruff!
Marge says Ruff!
Bart says Ruff!
私はこれを理解するのに非常に苦労しています.IMOコードはある種の無限ループまで実行する必要があります. 私が理解していることから(そして以前にPythonでプログラミングしたことがあります):クラスがアクティブになると、メインメソッドが呼び出され、メインメソッド内で同じタイプのクラスがさらに2つ作成されます。(ここで理解できない部分が来ます->)新しいクラスが作成されると、そのメインメソッド内でさらに2つのクラスが作成されます..無限を作成するときに、上記の出力を生成するのはどうしてですかクラスの数なので、コードの実行が実際に終了することはありません。
ありがとうございました!