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

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

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

瀏覽:104日期: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
主站蜘蛛池模板: 精品视自拍视频在线观看 | 国产在线视频h | 朝鲜美女免费一级毛片 | 日韩午夜在线视频不卡片 | 一本久道综合久久精品 | 国产美女做爰免费视 | 91精品国产爱久久久久久 | 久久久久久久国产a∨ | 国产免费人视频在线观看免费 | 乱人伦中文视频在线观看免费 | 国产精品视频99 | 日本午夜视频 | 久久久久一区二区三区 | 亚洲第一免费网站 | 成年人网站免费看 | 特级毛片aaa免费版 特级毛片a级毛免费播放 | 日本不卡不码高清免费观看 | 成人精品一区久久久久 | 日韩在线一区二区三区 | 日韩福利视频精品专区 | 免费看欧美一级片 | 久久国产精品一国产精品 | 国产亚洲一区二区三区不卡 | 真实国产乱人伦在线视频播放 | 免费国产一区二区在免费观看 | 日韩欧美精品一区二区三区 | 久久er热视频在这里精品 | 久久精品亚洲精品国产欧美 | 国产精品亚洲精品影院 | 泷泽萝拉亚洲精品中文字幕 | 精品xxxxxbbbb欧美中文 | 日本免费一区二区三区毛片 | 国产手机在线视频 | 一级片欧美| 久久久久久久久久免免费精品 | 国产精品久久久久久久久免费hd | 国产dvd毛片在线视频 | 精品国产亚洲人成在线 | 无套内谢孕妇毛片免费看 | 久久久久琪琪精品色 | avav男人天堂 |