日本粉色视频-日本理论片中文在线观看2828-日本理论在线观看被窝网-日本黄大片在线观看-国产精品福利在线观看秒播-国产精品福利资源在线

為什么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);

北大青鳥網上報名
北大青鳥招生簡章
主站蜘蛛池模板: 国产日产欧产精品精品推荐在线 | 国产精品亚洲欧美 | 日韩欧美一区二区三区在线观看 | 日韩午夜三级 | a级毛片免费高清毛片视频 a级毛片免费高清视频 | 免费黄色在线网址 | 色欧美与xxxxx | 特级毛片全部免费播放a一级 | 久视频免费精品6 | 欧美精品做人一级爱免费 | 国产精品亚洲欧美日韩区 | 成人a毛片久久免费播放 | 一区二区三区四区免费视频 | 成人午夜在线观看 | 久9久9精品视频在线观看 | 欧美另类videosgrstv变态 欧美另类高清xxxxx | 91精品国产一区二区三区四区 | 久久综合狠狠综合久久综合88 | 日韩在线观看中文字幕 | 最新国产三级在线观看不卡 | 亚洲人成网址在线播放a | 欧美久久一区二区 | 精品日韩在线视频一区二区三区 | 久久草在线视频免费 | 久久成人亚洲 | 成人精品国产亚洲 | 中国黄色一级毛片 | 九九色网站 | 精品国产杨幂在线观看福利 | 和日本免费不卡在线v | 乱淫毛片| 成人免费视频一区二区三区 | 精品视频在线免费看 | 毛片免费观看成人 | 国产视频久久久 | 久久亚洲国产欧洲精品一 | 91久久青草精品38国产 | 玖玖国产在线观看 | 亚洲视频在线精品 | 男女视频在线免费观看 | 久草在线视频看看 |