亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

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

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

瀏覽:108日期: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
主站蜘蛛池模板: 免费看成人www的网站软件 | 萌白酱在线喷水福利视频 | 国产三级在线播放线 | 一区在线免费观看 | 91理论片午午伦夜理片久久 | 色伦网| 国产乱码精品一区二区三区四川人 | 91久久国产成人免费观看资源 | 亚洲精品一区二区三区福利 | 很黄很色的摸下面的视频 | 自拍偷自拍亚洲精品一区 | 精品成人免费一区二区在线播放 | 免费狼人久久香蕉网 | 国产精品三级在线播放 | 日韩欧美一区二区三区免费观看 | 被老外玩爽的中国美女视频 | 久久草在线观看 | 欧美日韩一区二区高清视 | a级片在线免费播放 | 网站在线看 | 欧美日韩乱国产 | 99视频在线观看免费视频 | 99精品视频在线观看 | 91久久综合| 欧美毛片| 久久国产夜色精品噜噜亚洲a | 99精品高清不卡在线观看 | a毛片免费看 | 精品国产一区二区三区www | 国产中文字幕在线播放 | 欧美怡红院在线观看 | 精品久久一区二区 | 欧美色视频在线观看 | 性刺激久久久久久久久 | 国产在线精品一区二区三区不卡 | 99视频免费观看 | 亚洲精品久一区 | 欧美亚洲国产精品久久久 | 欧美三级毛片 | 久久久久久久国产精品 | 欧美色性 |