Java学习--多态
生活随笔
收集整理的這篇文章主要介紹了
Java学习--多态
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.?多態(tài)
多態(tài):同一個(gè)對(duì)象(實(shí)物),在不同時(shí)刻體現(xiàn)出來(lái)的不同狀態(tài)
多態(tài)的前提:
A:要有繼承關(guān)系
B:要有方法重寫
C:要有父類引用指向子類對(duì)象
????父類 f = new 子類()
多態(tài)中的成員訪問(wèn)特點(diǎn):
A:成員變量
編譯看左邊,運(yùn)行看左邊
B:構(gòu)造方法
創(chuàng)建子類的時(shí)候,訪問(wèn)父類的構(gòu)造方法,對(duì)父類的數(shù)據(jù)進(jìn)行初始化
C:成員方法
編譯看左邊,運(yùn)行看右邊
D:靜態(tài)方法
編譯看左邊,運(yùn)行看右邊(靜態(tài)和類相關(guān),算不上重寫,所以訪問(wèn)還是左邊的)
?
由于成員方法存在方法重寫,所以它運(yùn)行看右邊
?
多態(tài)的好處:
多態(tài)的弊端:
把父類的引用強(qiáng)制裝換為子類的引用(向下轉(zhuǎn)型)
1.貓和狗多態(tài)練習(xí)
class Anamial{public void eat(){System.out.println("動(dòng)物吃");}}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("貓吃魚(yú)");}public void play(){System.out.println("狗玩游戲");}}class ExtendsDemo{public static void main(String[] args){System.out.println("Extends ");//定義動(dòng)物為狗Anamial a = new Dog();a.eat();//a.lookDoor(); 編譯會(huì)報(bào)錯(cuò),動(dòng)物沒(méi)有狗的方法//將動(dòng)物還原成狗Dog d = (Dog)a;d.eat();d.lookDoor();//a變成貓a = new Cat();a.eat();//a.play(); 編譯會(huì)報(bào)錯(cuò),動(dòng)物沒(méi)有play方法//將動(dòng)物還原為狗Cat c = (Cat)a;c.eat();c.play();//Dog dd = (Dog)a; 編譯不會(huì)報(bào)錯(cuò),運(yùn)行報(bào)錯(cuò) java.lang.ClassCastException: Cat cannot be cast to Dog//不能將毛轉(zhuǎn)換成狗 } }
?
轉(zhuǎn)載于:https://www.cnblogs.com/Jims2016/p/9495237.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Java学习--多态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 论林耐斯-Linux系统的重要性
- 下一篇: Java通过FTP服务器上传下载文件的方