題組內容
七、
public class X
{public String whatIAm() {return “I’m an X.”;}}
public class Y extends X
{public String whatIAm() {return “I’m a Y.”;}}
public static void main(String[] args) throws IOException
{ X x;
BufferedReader reader = new BufferedReader
(new InputStreamReader(System.in));
if (reader.readLine().equals(“Go with X”)) x = new X();
else x = new Y();
System.out.println(x.whatIAm());
} // main
⑴請說明下列 main 程式執行情形。(10 分)
詳解 (共 1 筆)
詳解
以上程式碼創建了兩個類別 X 和 Y,其中 Y 是 X 的子類別。在 main 方法中,根據使用者的輸入決定要創建 X 或 Y 物件,並輸出物件的 whatIAm 方法的返回值。
如果使用者輸入 "Go with X",那麼創建的物件是 X,輸出的字串是 "I'm an X.";如果使用者輸入其他任何字串,創建的物件是 Y,輸出的字串是 "I'm a Y."。
這個程式展示了多型(polymorphism)的特性,即通過父類別引用變數可以同時引用子類別物件,並且呼叫方法時會動態綁定到實際的物件上。