JAVA多态的理解及应用
1.理解多態
1.多態是面向對象程序設計的三大支柱之一。
2.多態就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發出的方法調用在編程時并不確定,而是在程序運行期間才確定,即一個引用變量倒底會指向哪個類的實例對象,該引用變量發出的方法調用到底是哪個類中實現的方法,必須在由程序運行期間才能決定。因為在程序運行時才確定具體的類,這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類實現上,從而導致該引用調用的具體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁定的具體代碼,讓程序可以選擇多個運行狀態,這就是多態性。
3.繼承關系使一個子類能繼承父類的特征,并且附加一些新特征。子類是父類的特殊化,每個子類的實例都是其父類的實例,但是反過來不成立。使用父類對象的地方都可以使用子類對象,這就是通常所說的多態。
2.實現多態
Java實現多態有三個必要條件:繼承、重寫、向上轉型。
繼承:在多態中必須存在有繼承關系的子類和父類。
重寫:子類對父類中某些方法進行重新定義,在調用這些方法時就會調用子類的方法。
向上轉型:在多態中需要將子類的引用賦給父類對象,只有這樣該引用才能夠具備技能調用父類的方法和子類的方法。
只有滿足了上述三個條件,我們才能夠在同一個繼承結構中使用統一的邏輯實現代碼處理不同的對象,從而達到執行不同的行為。
3.代碼案例解析
1.代碼部分
public class Gun {public static void main(String[] args) {Guns G1 = new Guns();AK47 AK = new AK47();M4A1 M4 = new M4A1();M4A1S M4S = new M4A1S();G1.shoot();//對應輸出Guns shootAK.shoot();//對應輸出AK47 shootAK.speed();//對應輸出300m/sM4.shoot();//對應輸出M4A1 shootM4S.shoot();//繼承父類方法shoot,輸出M4A1 shootGuns G2 = new AK47();//向上轉型G2.shoot();//動態綁定,父類引用指向的或者調用的方法是子類的方法,輸出AK47 shoot//G2.speed();此方法不能編譯,向上轉型后父類引用不能調用子類自己的方法,此時需要向下轉型Guns G3 = M4S;M4S = (M4A1S)G3;//向下轉型M4S.speed();//對應輸出400m/s} }class Guns{//父類public void shoot(){System.out.println("Guns shoot");} }class AK47 extends Guns{//子類public void shoot(){System.out.println("AK47 shoot");}//方法重寫public void speed() {System.out.println("300m/s");} }class M4A1 extends Guns{//Guns的子類,M4A1-S的父類public void shoot(){System.out.println("M4A1 shoot");}//方法重寫public void speed() {System.out.println("450m/s");} }class M4A1S extends M4A1{public void speed() {System.out.println("400m/s");}//方法重寫 }2.輸出結果
Guns shoot
AK47 shoot
300m/s
M4A1 shoot
M4A1 shoot
AK47 shoot
400m/s
總結
以上是生活随笔為你收集整理的JAVA多态的理解及应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚拟化技术 — GuestOS Agen
- 下一篇: 数据挖掘之监督学习篇