Visual Basic でのアクセス レベル

宣言された要素のアクセス レベルとは、その要素にアクセスするために必要な権限の程度、つまり、その要素に対する読み取りと書き込みの許可がどのようなコードに与えられるかを示します。 アクセス レベルは、要素自体を宣言する方法だけでなく、要素のコンテナーのアクセス レベルによっても左右されます。 コンテナー要素にアクセスできないコードは、そのコンテナー要素に含まれる要素にも一切アクセスできません。含まれる要素が Public として宣言されていても同じです。 たとえば、Private 構造体の中の Public 変数は、その構造体を含むクラス内からはアクセスできますが、そのクラスの外からはアクセスできません。

Public

宣言ステートメントで Public (Visual Basic) キーワードを使用して宣言した要素は、同じプロジェクト内からも、そのプロジェクトを参照している他のプロジェクトからも、そのプロジェクトからビルドされたアセンブリからもアクセスできます。 Public 宣言の例を次に示します。

Public Class classForEverybody

Public は、モジュール レベル、インターフェイス レベル、または名前空間レベルでのみ使用できます。 つまり、パブリック要素は、ソース ファイルまたは名前空間のレベルか、インターフェイス内、モジュール内、クラス内、または構造体内では宣言できますが、プロシージャ内では宣言できません。

Protected

宣言ステートメントで Protected (Visual Basic) キーワードを使用して宣言した要素は、同じクラス、またはそのクラスの派生クラスからしかアクセスできません。 Protected 宣言の例を次に示します。

Protected Class classForMyHeirs

Protected は、クラス レベルでのみ、しかも、クラスのメンバーを宣言する場合にのみ使用できます。 つまり、プロテクト要素は、クラス内では宣言できますが、ソース ファイルや名前空間のレベルと、インターフェイス内、モジュール内、構造体内、およびプロシージャ内では宣言できません。

Friend

宣言ステートメントで Friend (Visual Basic) キーワードを使用して宣言した要素は、同じアセンブリからはアクセスできますが、そのアセンブリの外部からはアクセスできません。 Friend 宣言の例を次に示します。

Friend stringForThisProject As String

Friend は、モジュール レベル、インターフェイス レベル、または名前空間レベルでのみ使用できます。 つまり、フレンド要素は、ソース ファイルまたは名前空間のレベルか、インターフェイス内、モジュール内、クラス内、または構造体内では宣言できますが、プロシージャ内では宣言できません。

Protected Friend

宣言ステートメントで Protected キーワードと Friend キーワードの両方を使用して宣言した要素は、派生クラス内と同じアセンブリ内のいずれか、または両方からアクセスできます。 次のコードは、Protected Friend 宣言の例を示します。

Protected Friend stringForProjectAndHeirs As String

Protected Friend は、クラス レベルでのみ、しかも、クラスのメンバーを宣言する場合にのみ使用できます。 つまり、プロテクト フレンド要素は、クラス内では宣言できますが、ソース ファイルや名前空間のレベルと、インターフェイス内、モジュール内、構造体内、およびプロシージャ内では宣言できません。

Private

宣言ステートメントで Private (Visual Basic) キーワードを使用して宣言した要素は、同じモジュール、クラス、または構造体からしかアクセスできません。 Private 宣言の例を次に示します。

Private numberForMeOnly As Integer

Private は、モジュール レベルでのみ使用できます。 つまり、プライベート要素は、モジュール内、クラス内、または構造体内では宣言できますが、ソース ファイルや名前空間のレベルと、インターフェイス内およびプロシージャ内では宣言できません。

モジュール レベルでは、アクセス レベル キーワードのない Dim ステートメントは、Private 宣言と等価です。 ただし、Private キーワードを使った方がコードがわかりやすくなります。

アクセス修飾子

アクセス レベルを指定するキーワードは、アクセス修飾子と呼ばれます。 アクセス修飾子の比較を次の表に示します。

アクセス修飾子

付与されるアクセス レベル

このアクセス レベルで宣言できる要素

この修飾子を使用できる宣言コンテキスト

Public

無制限:

パブリック要素を参照できるすべてのコードがアクセスできます。

インターフェイス

モジュール

クラス

構造体

構造体メンバー

手順

プロパティ

メンバー変数

定数

列挙型

イベント

外部宣言

デリゲート

ソース ファイル

名前空間

インターフェイス

モジュール

クラス

構造体

Protected

派生:

プロテクト要素を宣言するクラス内のコード、またはそのクラスの派生したクラスが、この要素にアクセスできます。

インターフェイス

クラス

構造体

手順

プロパティ

メンバー変数

定数

列挙型

イベント

外部宣言

デリゲート

クラス

Friend

アセンブリ:

フレンド要素が宣言されているアセンブリ内のコードが、この要素にアクセスできます。

インターフェイス

モジュール

クラス

構造体

構造体メンバー

手順

プロパティ

メンバー変数

定数

列挙型

イベント

外部宣言

デリゲート

ソース ファイル

名前空間

インターフェイス

モジュール

クラス

構造体

Protected Friend

Protected と Friend の結合:

プロテクト フレンド要素と同じクラスまたは同じアセンブリ内のコード、または要素のクラスから派生した各クラス内から、要素にアクセスできます。

インターフェイス

クラス

構造体

手順

プロパティ

メンバー変数

定数

列挙型

イベント

外部宣言

デリゲート

クラス

Private

宣言コンテキスト:

含まれている型の中のコードを含め、プライベート要素が宣言されている型内のコードが、要素にアクセスできます。

インターフェイス

クラス

構造体

構造体メンバー

手順

プロパティ

メンバー変数

定数

列挙型

イベント

外部宣言

デリゲート

モジュール

クラス

構造

参照

処理手順

方法: 変数の可用性を制御する (Visual Basic)

参照

Dim ステートメント (Visual Basic)

Static (Visual Basic)

概念

宣言された要素の名前 (Visual Basic)

宣言された要素の特性 (Visual Basic)

Visual Basic における有効期間

Visual Basic におけるスコープ

Visual Basic における変数

Visual Basic での変数宣言

その他の技術情報

宣言された要素の参照 (Visual Basic)