SCJP 1.6版考題 061

出自 陳富國維基館
於 2013年3月30日 (六) 07:01 由 Ikk (對話 | 貢獻) 所做的修訂 (新頁面: Given two files, GrizzlyBear.java and Salmon.java: 1. package animals.mammals; 2. 3. public class GrizzlyBear extends Bear{ 4. void hunt() { 5. Salmon s = findSalmon(); 6....)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
前往: 導覽搜尋
Given two files, GrizzlyBear.java and Salmon.java:
1. package animals.mammals;
2.
3. public class GrizzlyBear extends Bear{
4.   void hunt() {
5.     Salmon s = findSalmon();
6.     s.consume();
7.   }
8. }
1. package animals.fish;
2.
3. public class Salmon extends Fish {
4.   public void consume() { /* do stuff */ }
5. }
 

If both classes are in the correct directories for their packages, 
and the Mammal class correctly defines the findSalmon() method, 
which change allows this code to compile?
  A. add import animals. mammals.*; at line 2 in Salmon.java
  B. add import animals.fish.*; at line 2 in GrizzlyBearjava
  C. add import animals.fish.Salmon.*; at line 2 in GrizzlyBear.java
  D. add import animals. mammals.GrizzlyBear*; at line 2 in Salmon.java

解答


Ans: B

解說:

假如二個類別都在套件正確的目錄,並且Mammal 類別正確地定義findSalmon方法,那一項改變可讓這個程式可以被編譯?
物件參考s的型態是Salmon類別型態,要使用其中的consume方法,若是相同套件,直接就可以存取(同屬一個目錄空間),
但GrizzlyBear 與Salmon 在不同的套件,Salmon 在套件animals.fish下,因此要使用Salmon 類別有二個方式:
   1.用全名 animals.fish.Salmon
   2.先import animals.fish.*; 或import animals.fish.Salmon; 即可以在程式中直接使用Salmon,不用較冗長的全名模式。