您好,登錄后才能下訂單哦!
本篇文章為大家展示了java中的多態是什么意思,代碼簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
多態性:多態性是指允許不同子類型的對象對同一消息作出不同的響應。簡單的說就是用同樣的對象引用調用同樣的方法但是做了不同的事情。多態性分為編譯時的多態性和運行時的多態性。
如果將對象的方法視為對象向外界提供的服務,那么運行時的多態性可以解釋為:當A系統訪問B系統提供的服務時,B系統有多種提供服務的方式,但一切對A系統來說都是透明的(就像電動剃須刀是A系統,它的供電系統是B系統,B系統可以使用電池供電或者用交流電,甚至還有可能是太陽能,A系統只會通過B類對象調用供電的方法,但并不知道供電系統的底層實現是什么,究竟通過何種方式獲得了動力)。
方法重載(overload)實現的是編譯時的多態性(也稱為前綁定),而方法重寫(override)實現的是運行時的多態性(也稱為后綁定)。
運行時的多態是面向對象最精髓的東西,要實現多態需要做兩件事:
方法重寫(子類繼承父類并重寫父類中已有的或抽象的方法);
對象造型(用父類型引用引用子類型對象,這樣同樣的引用調用同樣的方法就會根據子類對象的不同而表現出不同的行為)。
java中的引用變量有兩個類型:一個編譯時類型,一個是運行時類型。編譯時類型由聲明該變量使用的類型決定,運行時類型由實際賦給 該變量的對象決定。如果編譯時類型與運行時類型不一致,就可能出現所謂的多態。——瘋狂java講義
運行時多態的使用例子如下:
public class PolyTest5 { public void run(Car car)//這樣利用公共的父類就屏蔽了子類之間的差異性,可以應對所有的車. { car.run();//只要子類繼承了car都可以作為參數傳入方法中.如果沒有多態,就要有對應每個類的方法.非常的麻煩. } public static void main(String[] args) { PolyTest5 test = new PolyTest5(); Car car = new BMW(); test.run(car); QQ qq = new QQ(); test.run(qq);//向上類型轉換. } } class Car { public void run() { System.out.println("car is running"); } } class BMW extends Car { public void run() { System.out.println("BMW is running"); } } class QQ extends Car { public void run() { System.out.println("QQ is running"); } }
多態的三要素:1.繼承 2.重寫 3.父類引用指向子類對象。
上述內容就是java中的多態是什么意思,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。