java silver 紫本 第5章について質問
Q&A
Closed
java silver se11 紫本
ページ205~206の問題についての質問です。
class Foo1 {
int x;
void setX(int x){this.x = x;}
int getX(){return x;}
}
class Foo2{
Foo1 f;
void setFoo1( Foo1 f){ this.f = f;}
Foo1 getFoo1(){return f;}
}
public class Main{
public static void main(String[] args){
Foo1 f1 = new Foo1();
Foo2 f2 = new Foo2();
int a = 10;
f1.setX(a);
f2.setFoo1(f1);
// ここにはいるコード
System.out.print(f2.getFoo1().getX());
}
}
// ここに入るコード
にはどのコードが入りますが?という選択肢の問題で、
答えは以下の2つです。
f1.setX(100);
f2.getFoo1().setX(100);
解説を読んで、
f1.setX(100);
↑この選択肢がOKなことは理解できた
f2.getFoo1().setX(100);
↑こちらのコードが理解できない
という状況です。
f2.getFoo1().setX(100); は、
「変数f2が参照しているオブジェクトであるgetFoo1を呼び出して、
その結果をsetX(100)で処理する。」
ということを意味するコードだと理解しているのですが、
getFoo1()の処理は{return f}で
どうしてここにgetX()を.で繋げられるのかが
理解できていません。
この部分に関しての理解のポイントでも、
もしくはそこが分からないならまずここが理解できている?などの
ご指摘でも嬉しいです。
理解するためのアドバイスをいただけたら嬉しいです。
よろしくお願いいたします。m(_ _)m