Java多態(tài)性是Java面向?qū)ο缶幊陶Z言的一個重要特性,它是指同一個函數(shù)或方法可以被不同的對象調(diào)用并產(chǎn)生不同的運行結(jié)果。這種特性使得Java編程變得更靈活,使得代碼重用和擴展變得更加容易。
Java多態(tài)性主要體現(xiàn)在兩個方面:靜態(tài)多態(tài)和動態(tài)多態(tài)。
靜態(tài)多態(tài)的表現(xiàn)
靜態(tài)多態(tài)是在程序編譯時就開始表現(xiàn)的多態(tài)。靜態(tài)多態(tài)的表現(xiàn)形式是通過函數(shù)重載實現(xiàn)的。函數(shù)重載是指在同一個類中定義兩個或多個同名函數(shù),這些同名函數(shù)的參數(shù)列表不同,返回類型可以相同也可以不同。在函數(shù)的調(diào)用中,編譯器根據(jù)參數(shù)的類型、個數(shù)或順序來確定具體調(diào)用那個函數(shù)。
例如,我們定義了兩個同名的函數(shù)addition,一個接受兩個整型參數(shù),一個接受兩個double類型參數(shù)。當程序調(diào)用addition函數(shù)時,如果傳入兩個整型參數(shù),程序就調(diào)用第一個addition函數(shù),如果傳入兩個double類型參數(shù),程序就調(diào)用第二個addition函數(shù)。這樣,無論程序輸入什么數(shù)據(jù),都能得到正確的結(jié)果。
動態(tài)多態(tài)的表現(xiàn)
動態(tài)多態(tài)是在程序運行時才表現(xiàn)出來的多態(tài)。動態(tài)多態(tài)的表現(xiàn)形式是通過繼承和方法重寫實現(xiàn)的。方法重寫是指在子類中重新定義超類已有的方法,并按照子類特有的需求對其進行修改。重新定義后的方法可以與超類的原有方法具有相同的方法名、參數(shù)列表和返回值類型,也可以擁有不同的方法名、參數(shù)列表和返回值類型。
例如,我們有一個父類動物,有一個方法叫做run(),它是所有動物的運動方式。我們定義了一個子類狗,狗的運動方式肯定和其他動物不一樣。于是我們在子類狗中重寫了父類動物的run()方法,使得狗的運動方式和其他動物不同。在程序運行時,當調(diào)用動物的run()方法時,程序會根據(jù)對象的實際類型來選擇調(diào)用哪個版本的run()方法,如果是狗,則調(diào)用重寫的run()方法,如果是其他動物,則調(diào)用父類的run()方法。這樣,我們就能根據(jù)不同的需求產(chǎn)生不同的運行結(jié)果。