SCJP 1.6版考題 107

出自 陳富國維基館
前往: 導覽搜尋
Given:
10. class Inner{
11. private int x;
12. public void setX(int x){this.x = x;}
13. public int getX(){return x;}
14. }
15.
16. class Outer{
17. private Inner y;
18. public void setY(Inner y){this.y = y;}
19 public Inner getY(){return y;}
20. }
 
21.
22. public class Gamma{
23. public static void main(String[] args){
24. Outer o = new Outer();
25. Inner i = new Inner();
26. int n = 10;
27. i.setX(n);
28. o.setY(i);
29. //insert code here
30. System.out.println(o.getY().getX());
31. }
32. }

Which three code fragments, added individually at line 29, produce the output 100? (Choose three.)
  A. n = 100;
  B. i.setX(100);
  C. o.getY().setX(100);
  D. i = new Inner(); i.setX(100);
  E. o.setY(i); i = new Inner(); i.setX(100);
  F. i = new Inner(); i.setX(100); o.setY(i);


解答


Ans: B C F

解說:

此題問,在第29行插入什麼可使輸出為100?
第30行,o.getY().getX()使用o物件的getY取得其成員物件參考變數y(指向一個Inner的物件),
再用這個y喚用getX方法,此方法依Inner類別會將 Inner物件中的x成員變數傳回。 
這題可繪物件圖來看。