Java学习--多态
生活随笔
收集整理的這篇文章主要介紹了
Java学习--多态
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.?多態
多態:同一個對象(實物),在不同時刻體現出來的不同狀態
多態的前提:
A:要有繼承關系
B:要有方法重寫
C:要有父類引用指向子類對象
????父類 f = new 子類()
多態中的成員訪問特點:
A:成員變量
編譯看左邊,運行看左邊
B:構造方法
創建子類的時候,訪問父類的構造方法,對父類的數據進行初始化
C:成員方法
編譯看左邊,運行看右邊
D:靜態方法
編譯看左邊,運行看右邊(靜態和類相關,算不上重寫,所以訪問還是左邊的)
?
由于成員方法存在方法重寫,所以它運行看右邊
?
多態的好處:
多態的弊端:
把父類的引用強制裝換為子類的引用(向下轉型)
1.貓和狗多態練習
class Anamial{public void eat(){System.out.println("動物吃");}}class Dog extends Anamial{public void eat(){System.out.println("狗吃骨頭");}public void lookDoor(){System.out.println("狗看門");} }class Cat extends Anamial{public void eat(){System.out.println("貓吃魚");}public void play(){System.out.println("狗玩游戲");}}class ExtendsDemo{public static void main(String[] args){System.out.println("Extends ");//定義動物為狗Anamial a = new Dog();a.eat();//a.lookDoor(); 編譯會報錯,動物沒有狗的方法//將動物還原成狗Dog d = (Dog)a;d.eat();d.lookDoor();//a變成貓a = new Cat();a.eat();//a.play(); 編譯會報錯,動物沒有play方法//將動物還原為狗Cat c = (Cat)a;c.eat();c.play();//Dog dd = (Dog)a; 編譯不會報錯,運行報錯 java.lang.ClassCastException: Cat cannot be cast to Dog//不能將毛轉換成狗 } }
?
轉載于:https://www.cnblogs.com/Jims2016/p/9495237.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Java学习--多态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论林耐斯-Linux系统的重要性
- 下一篇: loj10165. 「一本通 5.3 例