国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

java - 多態調用同名成員變量,為何訪問的是父類的成員變量?

瀏覽:81日期:2023-11-05 08:41:57

問題描述

剛開始猜測,由于父類和子類的成員變量在堆中各存一份,可能是父類的存在上面,因此先找到的父類的成員變量。然后測試了一下,代碼如下:

package test;public class Polymorphism { public static void main(String[] args) {F f = new Z();f.show();System.out.println('f:'+f);System.out.println('f:'+f.a); }}abstract class F{ int a = 10; public abstract void show();}class Z extends F{ int a = 5; public void show(){System.out.println('Z:'+this);System.out.println('Z:'+this.a); }}

輸出為:Z:test.Z@15db9742Z:5f:test.Z@15db9742f:10

f與this指向同一個對象訪問同一個變量結果卻不同,所以我上邊的猜測應該是錯的。那究竟是什么原因導致多態調用同名成員變量,訪問的是父類的成員變量這種情況?

問題解答

回答1:

java - 多態調用同名成員變量,為何訪問的是父類的成員變量?

f指的是子類對象。只聽過方法的重寫和重載,沒有類變量的重寫和重載吧,我運行的程序,它分情況了,如果是調用方法,就是實際所指的對象(這里實際對象是子類對象Z)的方法,如果是類變量同名了,就是生命對象的類變量值。

回答2:

java中方法的重寫,重載與動態鏈接構成多態,多態就是同一個事物的不同表現形式。

你這個例子是方法的重寫表現出來的多態性。

聲明的是父類F,實際上指向他的子類Z,這個時候是相當于一個向上類型轉換,因為Z也是由F繼承過來的,所以可以向上轉型,現在Z是F類型的。

所以這里f變量由Z實例化出來的,但是它是F類型的,表現出來的是F的特性。

標簽: java
主站蜘蛛池模板: 91香蕉嫩草 | 最新怡红院全部视频在线 | 国产精品久久久久影院色老大 | 男人把女人桶到喷白浆的视频 | 欧美日韩高清观看一区二区 | 久久国产国内精品对话对白 | 亚洲一区日韩一区欧美一区a | 五月天婷婷伊人 | 99热.com| 免费国产不卡午夜福在线观看 | 国产成人cao在线 | 欧美a大片 | 婷婷国产成人久久精品激情 | 亚洲情a成黄在线观看 | 午夜在线播放免费人成无 | chinese多姿势videos | 欧美另类久久久精品 | 1024香蕉视频在线播放 | 亚洲品质自拍视频网站 | 欧美极品video粗暴 | 精品久久久中文字幕一区 | 91在线一区二区三区 | 美女黄视频在线 | 日韩中文字 | 国产精品一区二区丝瓜 | 久久99热精品免费观看欧美 | 中文一级国产特级毛片视频 | 欧美日韩精品一区二区三区 | 三级毛片网站 | 色综合久久88中文字幕 | 久久精品一区二区三区不卡牛牛 | 亚洲第一成人在线 | 国产一区亚洲二区三区 | 世界一级毛片 | 波多野结衣3女同在线观看 波多野结衣aⅴ在线 | 美女张开腿让人捅 | 亚洲经典三级 | 亚洲一区 在线播放 | 视频偷拍一级视频在线观看 | 亚洲精品日韩中文字幕久久久 | 国内精品九一在线播放 |