題組內容
三、以下 Java 程式片段試圖定義兩個有繼承關係的類別(classes),Parent 與 Child,以
及 5 個 print 方法(註解中標示的 A, B, C, D, E):
class Parent {
public void print() { // A
System.out.println( "In Parent" );
}
public void print( String message ) { // B
System.out.println( "In Parent" + ' ' + message );
}
}
class Child extends Parent {
public void print( int value ) { // C
System.out.println( "In Child" + ' ' + value );
}
public void print( String message ) { // D
System.out.println( "In Child" + ' ' + message );
}
public int print() { // E
System.out.println( "In Child" );
return 5;
}
}
⑴多載(overloading)與覆寫(overriding)是關於 print 方法的兩個不同的機制,請 以上列程式中定義的 5 個 print 方法,說明那幾個是覆寫?那幾個是多載?為什 麼?(請以 A, B, C, D, E 方式作答)(15 分)
詳解 (共 1 筆)
詳解
覆寫是子類別重新定義父類別的方法,以便改變其行為。多載是在同一個類別中定義多個方法,方法名相同但參數列表不同。以下是對於上述程式中的 5 個 print 方法的分析:
A:覆寫。子類別 Child 沒有重新定義此方法,但它繼承自父類別 Parent。
B:覆寫。子類別 Child 重新定義了此方法,方法名和參數列表和父類別 Parent 的方法相同。
C:多載。子類別 Child 定義了一個新的方法,叫做 print,但參數列表不同於父類別 Parent 的任何方法。
D:覆寫。子類別 Child 重新定義了此方法,方法名和參數列表和父類別 Parent 的方法相同。
E:覆寫。子類別 Child 重新定義了此方法,方法名和參數列表和父類別 Parent 的方法相同,但返回值不同。
因此,A 是覆寫、B 是覆寫、C 是多載、D 是覆寫、E 是覆寫。