Vb.net-classes-objects
VB.Net-クラスとオブジェクト
クラスを定義するときには、データ型の設計図を定義します。 これは実際にはデータを定義しませんが、クラス名が何を意味するのか、つまりクラスのオブジェクトが何を構成するのか、そしてそのようなオブジェクトに対して実行できる操作は定義します。
オブジェクトはクラスのインスタンスです。 クラスを構成するメソッドと変数は、クラスのメンバーと呼ばれます。
クラス定義
クラス定義は、キーワード Class で始まり、その後にクラス名が続きます。 End Bodyステートメントで終了するクラス本体。 以下は、クラス定義の一般的な形式です-
どこで、
- attributelist は、クラスに適用される属性のリストです。 オプションです。
- accessmodifier は、クラスのアクセスレベルを定義します。値は、Public、Protected、Friend、Protected Friend、およびPrivateです。 オプションです。
- Shadows は、変数が同じ名前の要素、または基本クラスのオーバーロードされた要素のセットを再宣言して非表示にすることを示します。 オプションです。
- MustInherit は、クラスを基本クラスとしてのみ使用でき、そこから直接オブジェクト、つまり抽象クラスを作成できないことを指定します。 オプションです。
- NotInheritable は、クラスを基本クラスとして使用できないことを指定します。
- Partial は、クラスの部分的な定義を示します。
- Inherits は、継承元の基本クラスを指定します。
- Implements は、クラスが継承するインターフェイスを指定します。
次の例は、長さ、幅、高さの3つのデータメンバーを持つBoxクラスを示しています-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
メンバー関数とカプセル化
クラスのメンバー関数は、他の変数と同様に、クラス定義内にその定義またはプロトタイプを持つ関数です。 メンバーであるクラスの任意のオブジェクトで動作し、そのオブジェクトのクラスのすべてのメンバーにアクセスできます。
メンバー変数は(設計の観点から)オブジェクトの属性であり、カプセル化を実装するためにプライベートに保持されます。 これらの変数は、パブリックメンバー関数を使用してのみアクセスできます。
クラス内の異なるクラスメンバーの値を設定および取得するための上記の概念を入れてみましょう-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
コンストラクターとデストラクター
クラス*コンストラクタ*は、そのクラスの新しいオブジェクトを作成するたびに実行されるクラスの特別なメンバーSubです。 コンストラクターの名前は New であり、戻り値の型はありません。
次のプログラムは、コンストラクタの概念を説明します-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
デフォルトのコンストラクターにはパラメーターはありませんが、必要に応じて、コンストラクターにパラメーターを含めることができます。 このようなコンストラクターは、*パラメーター化されたコンストラクター*と呼ばれます。 この手法は、次の例に示すように、作成時にオブジェクトに初期値を割り当てるのに役立ちます-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
- デストラクタ*は、クラスのオブジェクトがスコープから出るたびに実行されるクラスの特別なメンバーSubです。
デストラクタ*の名前は *Finalize であり、値を返すことも、パラメータを取ることもできません。 デストラクタは、ファイルを閉じる、メモリを解放するなど、プログラムから出る前にリソースを解放するのに非常に役立ちます。
デストラクタは継承またはオーバーロードできません。
次の例では、デストラクタの概念を説明します-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
VB.Netクラスの共有メンバー
Sharedキーワードを使用して、クラスメンバを静的として定義できます。 クラスのメンバーをSharedとして宣言すると、クラスのオブジェクトがいくつ作成されても、メンバーのコピーは1つしかありません。
キーワード Shared は、クラスに存在するメンバーのインスタンスが1つだけであることを意味します。 共有変数は、インスタンスを作成せずにクラスを呼び出すことで値を取得できるため、定数の定義に使用されます。
シェア変数は、メンバー関数またはクラス定義の外部で初期化できます。 クラス定義内でシェア変数を初期化することもできます。
メンバー関数をSharedとして宣言することもできます。 このような関数は、シェア変数のみにアクセスできます。 共有関数は、オブジェクトが作成される前でも存在します。
次の例は、共有メンバーの使用を示しています-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
継承
オブジェクト指向プログラミングで最も重要な概念の1つは、継承の概念です。 継承を使用すると、別のクラスの観点からクラスを定義でき、アプリケーションの作成と保守が容易になります。 これにより、コード機能を再利用して実装時間を短縮することもできます。
クラスを作成するとき、プログラマは完全に新しいデータメンバーとメンバー関数を記述する代わりに、新しいクラスが既存のクラスのメンバーを継承するように指定できます。 この既存のクラスは base クラスと呼ばれ、新しいクラスは derived クラスと呼ばれます。
基本クラスと派生クラス
クラスは複数のクラスまたはインターフェイスから派生できます。つまり、複数の基本クラスまたはインターフェイスからデータと機能を継承できます。
派生クラスを作成するためにVB.Netで使用される構文は次のとおりです-
基本クラスShapeとその派生クラスRectangleを考えます-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
基本クラスの初期化
派生クラスは、基本クラスのメンバー変数とメンバーメソッドを継承します。 したがって、サブクラスを作成する前に、スーパークラスオブジェクトを作成する必要があります。 スーパークラスまたは基本クラスは、VB.Netで暗黙的に MyBase として知られています。
次のプログラムはこれを示しています-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
VB.Netは多重継承をサポートしています。