qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Java訪問控制權限

           Java的訪問控制權限相比于C++等語言可能稍微復雜一點,不過也不難理解。Java的訪問控制權限分為兩塊——“類或接口的訪問控制權限”與“變量和方法的訪問控制權限”。
            1.類或接口的訪問控制權限
            類或接口的訪問控制權限是指能不能用該類建立對象,接口能不能被實現等等。能夠修飾類或接口的訪問控制權限的修飾符(modifier)只有兩個——public和friendly.不過,值得一說的是friendly并不是Java的關鍵字,它只是一個習慣叫法,指的是“沒有寫訪問控制權限修飾符”的情況。
            public修飾的類或接口在同一個包中的任何一個類中都可以被訪問。不同包呢?當然能訪問啦,否則引包機制不就失效了嘛(因為引包相當于拿到了一個包的public類或接口)。
            friendly修飾的類或接口在同一個包中的任何一個類中都可以被訪問(和public相同),不能被不同包中的類訪問。
            總結:類或接口的訪問控制權限分為“包中”和“包外”。無論修飾符(modifier)是什么,在“包中”均可訪問。對于“包外”,public修飾的類或接口可以被訪問,friendly修飾的類或接口不能被訪問。
            2.變量和方法的訪問控制權限
            變量和方法的訪問控制權限的修飾符(modifier)有四個——public,protected,friendly和private.
            變量和方法在本類(定義該變量或方法的類)中不論訪問控制權限修飾符是什么,均可被訪問(這里先不考慮“靜態”的情況)。那么接下來只研究類外。類外也分“包內”和“包外”,接下來就從這兩方面說起,并且研究“包外”時只考慮引入的包中的public類,因為friendly的類連直接被訪問都做不到,何談訪問變量和方法。
            public修飾的變量和方法在“包內”和“包外”均可被訪問。
            protected修飾的變量和方法在“包內”可以被訪問,在“包外”只能被子類訪問。
            friendly修飾的變量和方法在“包內”可以被訪問,在“包外”不能被訪問。
            private修飾的變量和方法在“包內”或“包外”均不能被訪問。
            總結:對于“類外”,public,protected,friendly和private的嚴格性逐漸遞增。public可以說沒限制,protected剝奪了“包外”非子類的訪問能力,friendly在protected基礎上進一步剝奪了“包外”子類的訪問能力,至此“包外”的訪問能力全無;private更嚴格,它在friendly基礎上更是一下剝奪了“包內”的訪問能力。
            總的來說,看某個成員能否被訪問要分兩步:1.根據所在類的訪問控制權限看該類能否被訪問;2.根據該成員的訪問控制權限判斷取得所在類后該成員能否被訪問。

          posted on 2014-07-29 09:24 順其自然EVO 閱讀(190) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 南通市| 宝兴县| 衡阳市| 高邮市| 四子王旗| 曲松县| 子长县| 遂昌县| 名山县| 元朗区| 泊头市| 涿州市| 响水县| 黄浦区| 嫩江县| 固阳县| 古交市| 治多县| 天柱县| 孝感市| 兖州市| 浦城县| 阳曲县| 平果县| 靖宇县| 彩票| 惠州市| 湖州市| 吉木萨尔县| 密云县| 柘城县| 共和县| 木兰县| 玉林市| 海晏县| 四子王旗| 微山县| 邵阳县| 惠东县| 鹤峰县| 古浪县|