在面對對象的程序設計語言中,多態是繼數據抽象和繼承之後的第三種基本特性。下面我們直接看例子來說明什麼是多態。
public class Wind extends Instrument { public void play(Note n){ System.out.print("Instrument play"); } }
public class Instrument { public void play(Note n){ System.out.print("Instrument play"); } }
public class Wind extends Instrument { public void play(Note n){ System.out.print("Wind play"); } }
public class Music { public static void tune(Instrument i){ i.play(Note.MIDDLE_C); } public static void main(String[] args){ Wind wind = new Wind(); tune(wind); } }輸出的結果:Wind play
上面的例子是多態向上轉型的一個典型示例。Music類中的tune方法接受所有Instrument類的對象,包括其子類對象,子類中複寫類父類中的方法,故調用的是子類中的play();
這裏設計到一個後期綁定或者說是動態綁定,意思是在運行期根據對象的類型進行綁定。java中除了static方法和final方法之外,其他的所有的方法都是後期綁定。
敬請關注下期內容:java編程思想之接口