成員的「已宣告可訪問性」可以是下列之一:
宣告乙個成員時所能選擇的已宣告可訪問性的型別,依賴於該成員宣告出現處的上下文。此外,當成員宣告不包含任何訪問修飾符時,宣告發生處的上下文會為該成員選擇乙個預設的已宣告可訪問性。
乙個成員的可訪問域由(可能是不連續的)程式文字節組成,從那裡可以訪問該成員。出於定義成員可訪問域的目的,如果成員不是在某個型別內宣告的,就稱該成員是頂級的;如果成員是在其他型別內宣告的,就稱該成員是巢狀的。此外,程式的程式文字定義為包含在該程式的所有原始檔中的全部程式文字,而型別的程式文字定義為包含在該型別(可能還包括巢狀在該型別內的型別)的「類體」、「結構體」、「介面體」或「列舉體」中的開始和結束(「」)標記之間的全部程式文字。
預定義型別(如 object、int 或 double)的可訪問域是無限制的。
在程式 p 中宣告的頂級型別 t 的可訪問域如下定義:
從這些定義可以推斷出:頂級型別的可訪問域始終至少是宣告了該型別的程式的程式文字。
在程式 p 內的型別 t 中宣告的巢狀成員 m 的可訪問域如下定義(注意 m 本身可能就是乙個型別):
從這些定義可以看出:巢狀成員的可訪問域總是至少為宣告該成員的型別的程式文字。還可以看出:成員的可訪問域包含的範圍決不會比宣告該成員的型別的可訪問域更廣。
用直觀的話來講,當訪問型別或成員 m 時,按下列步驟進行計算以確保允許進行訪問:
在下面的示例中,
public class a
internal class b
private class d
}
類和成員具有下列可訪問域:
如示例所示,成員的可訪問域決不會大於包含它的型別的可訪問域。例如,即使所有的 x 成員都具有公共級的已宣告可訪問性,但除了 a.x 外,所有其他成員的可訪問域都受包含型別的約束。
如第 3.4 節中所描述的那樣,基類的所有成員(例項建構函式、析構函式和靜態建構函式除外)都由派生型別繼承。這甚至包括基類的私有成員。但是,私有成員的可訪問域只包括宣告該成員的型別的程式文字。在下面的示例中,
class a
}class b: a}
類 b 繼承類 a 的私有成員 x。因為該成員是私有的,所以只能在 a 的「類體」中對它進行訪問。因此,對 b.x 的訪問在 a.f 方法中取得了成功,在 b.f 方法中卻失敗了。
C 成員可訪問性
c 成員可訪問性 收藏 根據網上資料整理而成。一 c 中已宣告的可訪問性 1.public 訪問不受限制 2.internal 訪問僅限於所屬程式集 3.protected 訪問僅限於當前類和其子類 4.internal protected 訪問僅限於當前程式集或其子類 子類可以不屬於當前程式集 5...
C 可訪問性約束
c 語言中的有些構造要求某個型別至少與某個成員或其他型別具有同樣的可訪問性 at least as accessible as 如果t 的可訪問域是 m可訪問域的超集,我們就說型別 t至少與成員或型別 m具有同樣的可訪問性。換言之,如果 t在可訪問 m的所有上下文中都是可訪問的,則 t至少與 m具有...
C 可訪問性級別
使用訪問修飾符 public protected internal 或private 可以為成員指定以下宣告的可訪問性之一。宣告的可訪問性 含義 public 訪問不受限制。protected 訪問僅限於包含類或從包含類派生的型別。internal 訪問僅限於當前程式集。protectedinter...