クラスとモジュール
更新 : 2007 年 11 月
クラスとモジュールはどちらも、内部に定義された項目をカプセル化する参照型ですが、他のプロシージャから項目にアクセスする方法が異なります。
クラスとモジュールの違い
クラスとモジュールの主な違いは、クラスはオブジェクトとしてインスタンス化でき、標準モジュールはインスタンス化できないことです。標準モジュールのデータには 1 つのコピーしか存在しません。したがって、プログラムのある部分で標準モジュールのパブリック変数を変更した後、プログラムの別の部分で同じ変数を読み取ると、変更後の値が取得されます。一方、オブジェクト データは、オブジェクトのインスタンスごとに存在します。また、標準モジュールとは異なり、クラスはインターフェイスを実装できます。
![]() |
---|
Shared 修飾子をクラス メンバに適用すると、そのクラス メンバは、クラスの特定のインスタンスではなくクラス自身に関連付けられます。そのメンバに対しては、モジュール メンバにアクセスするのと同じ方法で、クラス名によって直接アクセスできます。共有メンバの詳細については、「Visual Basic の共有メンバ」を参照してください。 |
クラスとモジュールでは、メンバに使用されるスコープも異なります。クラス内で定義されたメンバは、クラスの特定のインスタンス内がスコープとなり、そのオブジェクトの有効期間にだけ存在します。クラスの外側からクラス メンバにアクセスするには、Object.Member の形式の完全修飾名を使用する必要があります。
一方、モジュール内で宣言したメンバは既定でパブリック アクセスとなり、そのモジュールにアクセスできる任意のコードからアクセスできます。つまり、標準モジュールの変数は、プロジェクトのどこからでも参照でき、プログラムが実行されている間ずっと存在するため、事実上のグローバル変数です。