Java中关于多态的理解
Java中多態的理解
JAVA中的多態可以簡單的理解為一種事物的多種形態,當然多態是在繼承的基礎上有重寫才存在。(因為這篇文章是轉載過來的,大部分地方持支持的態度,但也有一些地方存在個人態度,比如這里,我認為接口實現也算存在多態)。
如何理解一種事物的多種形態?
舉個例子,拿人類、男人、女人來說。男人、女人、都分別繼承了人類!
人類有鼻子、眼睛、嘴巴、男人或者女人都有。
人類會吃飯,會睡覺,會散步,男人或者女人都會。
但是在男人和女人都有自己獨特的一些技能。比如說男人大多數力氣很大。女人大多數都很漂亮。
以上是個前提。我們用代碼去實現一下。
下面是定義的People類
下面是定義的男人類:并重寫了People的eat和walk的方法,男人還有自己特有的方法為power
下面定義的是女人類:女人類也重寫了People的eat和walk的方法,并且女人有自己特有的方法beautiful
當我們在Main方法中去聲明People類:people對象可以調用People類中的已經聲明的方法和屬性,這個不需要解釋。如下圖所示:
我們可以用創建一個父類的引用,用一個子類的對象去賦值。
創建父類的引用說白了就是構造一個父類的對象,在我們當前的邏輯中就是創建People的對象;
用一個子類的對象去賦值,就是可以用子類的對象去代替之前的new People();
因為Man類和Woman類都是繼承People類的,也就是說,當用到People的時候,我可以直接用People的子類進行替代。同理聲明Woman也是可以的:
這樣的聲明方式有一種特點,就是創建的對象p1能調用多少方法,看的是左邊的類,在People p1 = new Woman();中,p1能調用多少屬性和方法看的是左側的People類。如下圖所示:
可以調用出父類的一些屬性和方法,當我們調用eat()方法時候,運行:
我們發現運行的是Woman中的eat方法
我們改變一下Woman中的eat方法名字,從eat改為eatsss
重新執行p1.eat()
運行的就是父類中的方法:
給People類中增加一個屬性 int ID 并且賦值為1;
給 Woman類中也增加一個屬性 int ID =2;
在main函數中調用p1.ID并打印
結果為1
也就是說 這樣的情況下:People p1 = new Woman();
**調用的屬性看的是左邊的屬性,方法需要看一下是否是重寫的,因為你只能調用出People中的屬性和方法,如果是在右側的類中有重寫的同名方法,調用的就是它,如果沒有重寫的方法,調用的就是左側的類中的方法
還是借用上面的三個類來描述:
在main方法所在的類中,加入一個一個方法:
是一個People類,我們上面說了,任何父類出現的地方,我們都可以用子類來替代。
當我們調用下該方法:
這就是多態中的使用,傳入的對象調用那個具體的方法,還是要看是否有重寫,有重寫走子類重寫,沒有重寫走父類的方法。
注:本文章為轉載文章,表示博主同意文章出處的博主的觀點。希望各位大佬不吝賜告,改善文章不妥之處,以免誤人子弟,謝謝!
轉載于:https://blog.csdn.net/zhangguan96/article/details/123721254
總結
以上是生活随笔為你收集整理的Java中关于多态的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VC其它-如果将VC中的字体换成Verd
- 下一篇: 一般PNG图片压缩的Java实现