題組內容
三、以下 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;
}
}
⑵上列程式定義的 2 個類別的 5 個 print 方法中,那一個的型態部分會造成編譯錯誤? 為什麼?(6 分)
詳解 (共 1 筆)
詳解
在上述程式中,有一個 print 方法的型態部分會造成編譯錯誤,那就是 Child 類別中的 int print() 方法,因為在 Java 中,覆寫(overriding)一個方法時,其傳回值型態必須相容於父類別中所定義的方法。在 Parent 類別中,print() 方法的傳回值型態是 void,但在 Child 類別中,print() 方法的傳回值型態是 int,這樣就會造成編譯錯誤