欧美激情网站,特级一级全黄毛片免费,欧美亚洲视频一区,国产高清在线播放免费观看,欧美日韩中文国产,欧美日韩操

為什么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.
我們看下面這個例子,我們創建了兩個子對象,一個使用的是子對象的引用,一個使用的是父對象的引用。

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
按照我們已有的多態的概念,第二個應該是輸出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.

意思就是:

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

其實,簡單來說,就是子類不會去重寫覆蓋父類的成員變量,所以成員變量的訪問不能像方法一樣使用多態去訪問。

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

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

北大青鳥網上報名
北大青鳥招生簡章
主站蜘蛛池模板: hd最新国产人妖ts视频| 色先锋 影音先锋a 资源站| 青青青在线视频| 人人揉揉揉人人捏人人看| 噜噜噜在线观看播放视频| 高清欧美在线三级视频| 国产成年视频| 成人a网| 午夜看一级特黄a大片黑| 色悠久久久久综合网伊人男男| 天天综合久久| 亚洲理论片在线观看| 中文字幕国产一区| 69免费视频| 国产一级精品绿帽视频| 在线黄色免费网站| 91免费永久在线地址| 国产精品亚洲片在线观看麻豆 | 亚洲国产精品婷婷久久| 伊人导航| 久久精品国产72国产精福利 | 精品一区二区高清在线观看 | 夜夜骑天天操| 2021国产精品最新在线| 欧美理论片手机在线电影| 伊人网五月天| 精品视频免费观看| 亚洲一区二区三区高清视频| 国产一级毛片电影| 亚洲网站免费看| 韩国免费三片在线视频| 亚洲国产视频一区| 成人av在线电影| 午夜在线播放免费高清观看| 成人污视频在线观看| 香港三级日本三级三级韩级一| 中文字幕天堂久久精品| 久久综合亚洲| 国产成人精品系列在线观看| 免费观看成年欧美1314www色| 成人免费视频在|