Java是一門面向對象的編程語言,它的核心思想是封裝、繼承和多態。這里介紹兩個實現多態的重要概念:接口和重寫。
接口是一種抽象類型,它定義了一些方法的簽名,但沒有具體的實現。接口可以被類實現,實現接口的類需要實現接口中定義的所有方法。一個類可以實現多個接口,這就為實現多態提供了便利。
public interface Flyable { void fly(); } public class Bird implements Flyable { public void fly() { System.out.println("Bird is flying."); } } public class Airplane implements Flyable { public void fly() { System.out.println("Airplane is flying."); } }
在上面的代碼中,Flyable是一個接口,定義了一個fly()方法。Bird和Airplane類都實現了Flyable接口,并都重寫了接口中的fly()方法。這樣,在調用fly()方法時,可以通過Flyable類型來實現多態,即讓程序在運行時根據對象的實際類型來確定調用哪個類的fly()方法。
重寫是指子類實現了和父類相同的方法,并且在子類中重新定義了方法的實現。重寫的方法必須和父類方法的簽名完全相同,返回值、參數類型和個數都不能改變。
public class Vehicle { public void start() { System.out.println("Vehicle is starting."); } } public class Car extends Vehicle { public void start() { System.out.println("Car is starting."); } }
在上面的代碼中,Car類繼承了Vehicle類,并重寫了它的start()方法。如果創建一個Car對象,并調用start()方法,程序會優先調用Car中的start()方法,輸出"Car is starting."。如果強制將Car對象轉換為Vehicle類型,再調用start()方法,程序則會調用父類Vehicle中的start()方法,輸出"Vehicle is starting."。
下一篇java的接口和api