最近程序中需要用到多線程工作下的單例模式。而其多種實現方法中,利用內部類實現懶漢模式是一種值得推薦的方式。順便也就對內部類和外部類之間的關系做了一下研究,總結如下(理解不困難,不粘貼代碼了,有需要的留言,我再做個demo)。
- static成員與非static成員的訪問:無論是外部類訪問內部類的靜態成員(變量和函數等),還是內部類訪問外部類的靜態成員,都不能用實例訪問,必須用類本身訪問;相應地,訪問對方的非靜態成員,則必須用實例訪問。這與兩個普通類之間的相互訪問對方的static or non-static成員的方法是一致的。
- 關於訪問限制:內部類可以訪問外部類的任何訪問級別的成員(public, internal, protected, private);而外部類只能訪問內部類的public 或者internal級別的成員,不能訪問內部類protected和private級別的成員。
- 關於調用方法:外部類調用內部類靜態成員時,必須用“類名.成員名”的格式。內部類調用外部類成員時,如果內部類沒有該外部類成員的同名成員,可以直接用“成員名”訪問(也可以用“外部類.成員名”格式訪問);如果內部類中定義了與外部類成員同名的成員,則內部類中方位外部類成員時,需要用"類名.成員名"的方式。
- 關於外部類的外部(其它類)訪問內部類,這與訪問一個普通類的方法相同,訪問限制也相同,所不過類名是“外部類.內部類”。