Csharp-classes
C#-クラス
クラスを定義するときには、データ型の設計図を定義します。 これは実際にはデータを定義しませんが、クラス名の意味を定義します。 つまり、クラスのオブジェクトの構成要素と、そのオブジェクトに対して実行できる操作。 オブジェクトはクラスのインスタンスです。 クラスを構成するメソッドと変数は、クラスのメンバーと呼ばれます。
クラスを定義する
クラス定義は、キーワードclassで始まり、その後にクラス名が続きます。クラス本体は、中括弧のペアで囲まれています。 以下は、クラス定義の一般的な形式です-
注-
- アクセス指定子は、メンバーとクラス自体のアクセス規則を指定します。 言及されていない場合、クラス型のデフォルトのアクセス指定子は internal です。 メンバーのデフォルトアクセスは private です。
- データ型は変数の型を指定し、戻り値の型はメソッドが返すデータのデータ型があればそれを指定します。
- クラスメンバにアクセスするには、ドット(。)演算子を使用します。 *ドット演算子は、オブジェクトの名前をメンバーの名前にリンクします。
次の例は、これまでに説明した概念を示しています-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
メンバー関数とカプセル化
クラスのメンバー関数は、他の変数と同様に、クラス定義内に定義またはプロトタイプを持つ関数です。 メンバーであるクラスのオブジェクトを操作し、そのオブジェクトのクラスのすべてのメンバーにアクセスできます。
メンバー変数は(設計の観点から)オブジェクトの属性であり、カプセル化を実装するためにプライベートに保持されます。 これらの変数は、パブリックメンバー関数を使用してのみアクセスできます。
クラス内の異なるクラスメンバーの値を設定および取得するための上記の概念を入れてみましょう-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
C#コンストラクター
クラス*コンストラクタ*は、そのクラスの新しいオブジェクトを作成するたびに実行されるクラスの特別なメンバー関数です。
コンストラクターはクラスの名前とまったく同じ名前を持ち、戻り値の型はありません。 次の例では、コンストラクタの概念を説明します-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
- デフォルトのコンストラクタ*にはパラメータがありませんが、必要に応じて、コンストラクタにパラメータを含めることができます。 このようなコンストラクターは、*パラメーター化されたコンストラクター*と呼ばれます。 この手法は、次の例に示すように、作成時にオブジェクトに初期値を割り当てるのに役立ちます-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
C#デストラクタ
- デストラクタ*は、クラスのオブジェクトがスコープ外に出るたびに実行されるクラスの特別なメンバー関数です。 *デストラクタ*は、チルダ(〜)が前に付いたクラスとまったく同じ名前を持ち、値を返すことも、パラメータを取ることもできません。
デストラクタは、プログラムを終了する前にメモリリソースを解放するのに非常に役立ちます。 デストラクタは継承またはオーバーロードできません。
次の例では、デストラクタの概念を説明します-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
C#クラスの静的メンバー
キーワード static は、クラスに対してメンバーのインスタンスが1つだけ存在することを意味します。 静的変数は、クラスのインスタンスを作成せずにクラスを呼び出すことで値を取得できるため、定数の定義に使用されます。 静的変数は、メンバー関数またはクラス定義の外部で初期化できます。 クラス定義内の静的変数を初期化することもできます。
次の例は、*静的変数*の使用を示しています-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
- メンバー関数*を*静的*として宣言することもできます。 このような関数は、静的変数にのみアクセスできます。 静的関数は、オブジェクトが作成される前でも存在します。 次の例は、*静的関数*の使用を示しています-
上記のコードをコンパイルして実行すると、次の結果が生成されます-