為什么Java中類的成員變量不能被重寫茅特?

這篇文章討論了Java面向對象概念中一個基本的概念--Field Hiding(成員變量隱藏)

成員變量在Java中能夠被重寫么?

Let’s first take a look at the following example which creates two Sub objects. One is
assigned to a Sub reference, the other is assigned to a Super reference.
我們看下面這個例子棋枕,我們創(chuàng)建了兩個子對象白修,一個使用的是子對象的引用,一個使用的是父對象的引用重斑。


public class FieldOverriding {

    public static void main(String[] args) {
        Sub c1 = new Sub();
        Super c2 = new Sub();
        System.out.println(c1.s);
        System.out.println(c2.s);

    }

}

class Super {
    String s = "Super";
}

class Sub extends Super {
    String s = "Sub";
}

程序的輸出結果是:

Paste_Image.png

按照我們已有的多態(tài)的概念兵睛,第二個應該是輸出sub才對,但卻輸出了super绸狐。這是為什么呢卤恳?

不會重寫成員變量,而是隱藏成員變量

Java文檔中對隱藏域的定義:

Within a class, a field that has the same name as a field in the superclass hides the superclass’s field, even if their types are different. Within the subclass, the field in the superclass cannot be referenced by its simple name. Instead, the field must be accessed through super. Generally speaking, we don’t recommend hiding fields as it makes code difficult to read.

意思就是:

在一個類中寒矿,子類中的成員變量如果和父類中的成員變量同名突琳,那么即使他們類型不一樣,只要名字一樣符相。父類中的成員變量都會被隱藏拆融。在子類中,父類的成員變量不能被簡單的用引用來訪問啊终。而是镜豹,必須從父類的引用獲得父類被隱藏的成員變量,一般來說蓝牲,我們不推薦隱藏成員變量趟脂,因為這樣會使代碼變得難以閱讀。

其實例衍,簡單來說昔期,就是子類不會去重寫覆蓋父類的成員變量已卸,所以成員變量的訪問不能像方法一樣使用多態(tài)去訪問。

訪問隱藏域的方法

  • 就是使用父類的引用類型硼一,那么就可以訪問到隱藏域累澡,就像我們例子中的代碼

  • 就是使用類型轉換System.out.println(((Super)c1).s);

翻譯自http://www.programcreek.com/simple-java/

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市般贼,隨后出現(xiàn)的幾起案子愧哟,更是在濱河造成了極大的恐慌,老刑警劉巖哼蛆,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蕊梧,死亡現(xiàn)場離奇詭異,居然都是意外死亡人芽,警方通過查閱死者的電腦和手機望几,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萤厅,“玉大人,你說我怎么就攤上這事靴迫√栉叮” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵玉锌,是天一觀的道長名挥。 經(jīng)常有香客問我,道長主守,這世上最難降的妖魔是什么禀倔? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮参淫,結果婚禮上救湖,老公的妹妹穿的比我還像新娘。我一直安慰自己涎才,他們只是感情好鞋既,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耍铜,像睡著了一般邑闺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棕兼,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天陡舅,我揣著相機與錄音,去河邊找鬼伴挚。 笑死靶衍,一個胖子當著我的面吹牛臂寝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摊灭,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼咆贬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了帚呼?” 一聲冷哼從身側響起掏缎,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎煤杀,沒想到半個月后眷蜈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡沈自,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年酌儒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枯途。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡忌怎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酪夷,到底是詐尸還是另有隱情榴啸,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布晚岭,位于F島的核電站鸥印,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坦报。R本人自食惡果不足惜库说,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望片择。 院中可真熱鬧潜的,春花似錦、人聲如沸构回。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纤掸。三九已至脐供,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間借跪,已是汗流浹背政己。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掏愁,地道東北人歇由。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓卵牍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親沦泌。 傳聞我的和親對象是個殘疾皇子糊昙,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 對象的創(chuàng)建與銷毀 Item 1: 使用static工廠方法,而不是構造函數(shù)創(chuàng)建對象:僅僅是創(chuàng)建對象的方法谢谦,并非Fa...
    孫小磊閱讀 1,982評論 0 3
  • 轉至元數(shù)據(jù)結尾創(chuàng)建: 董瀟偉释牺,最新修改于: 十二月 23, 2016 轉至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,715評論 0 9
  • 我們常常會聽說 Objective-C 是一門動態(tài)語言,那么這個「動態(tài)」表現(xiàn)在哪呢回挽?我想最主要的表現(xiàn)就是 Obje...
    Ethan_Struggle閱讀 2,195評論 0 7
  • 1. Java基礎部分 基礎部分的順序:基本語法没咙,類相關的語法,內(nèi)部類的語法千劈,繼承相關的語法祭刚,異常的語法,線程的語...
    子非魚_t_閱讀 31,632評論 18 399
  • 夜涼如水 枕著你的名字卻難寐 無你相隨 月色 全無味 聆聽彼此的心跳 空氣彌漫著甜甜的味道 不再煩躁 相伴即是最好...
    妮妮小阿貍閱讀 202評論 6 4