Wind extends Instrument 表示:Wind 對象也是 Instrument 對象。基類所有方法衍生類自動擁有。
class Instrument {
void play() {}
static void tune(Instrument i) { i.play(); }
}
class Wind extends Instrument {}
public class Wind {
public static void main(String[] args) {
Wind flute = new Wind();
Instrument.tune(flute); // 隱式向上轉型:Wind → Instrument
}
}
Wind 繼承了 Instrument 的完整接口。tune() 內只調用 play(),Wind 必有此方法(繼承或覆寫)。若 Wind 覆寫 play(),運行期 tune() 調用的是 Wind.play()。這就是「將 Wind 當 Instrument 用,卻得到 Wind 行為」的多態魔力。
將衍生類引用作為基類引用使用的過程,稱為向上轉型。它是多態運作的前提條件。