クラス【C#】

C#におけるクラス、およびそれに準ずる要素について説明します。

C#におけるクラス

C#はオブジェクト指向型の言語であり、プログラムのすべての要素をオブジェクトとして扱います。そのオブジェクトの設計図となるのがクラスであり、クラスから作られたオブジェクトの実体のことをインスタンスと呼びます。

クラスの定義

基本書式

アクセス修飾子 class クラス名
{
	フィールドの宣言
        コンストラクタの宣言
	メソッドの宣言
            ...
}

C#ではクラス名は先頭を大文字としたキャメル記法で定義するのが慣例となっています。また、クラスにアクセス修飾子をつける場合は、classの前に付加します。

クラスの構成要素

  • フィールド
  • プロパティ
  • インデクサ
  • メソッド
  • デリゲート
  • イベント
  • クラス
  • インターフェース
  • 構造体

インスタンスの生成

基本書式

クラス名 x = new クラス名();

クラスからインスタンスを生成する場合はnew演算子を用います。コンストラクトに引数が指定されている場合は new クラス名(引数1, 引数2); のように引数を指定します。

また、インスタンスを格納する変数は、データ型が明らかな場合はデータ型を指定せずに var を用いて暗黙的型指定ローカル変数とすることができます。

var x = new クラス名();

オブジェクト初期化子を用いた構文

var x = new クラス名
{
	プロパティ1 = 値1,
	プロパティ2 = 値2,
};

この構文を用いることで、インスタンスの生成と同時にプロパティも初期化することができます。

クラスに準ずる要素

構造体

構造体とは、クラスと同様の構造で、値型のものをいいます。クラスと同様にフィールド、メソッド、プロパティ、コンストラクタを持つことができますが、継承することはできません。
構造体は一般的にデータのサイズが小さくて、継承の必要のないデータ構造に用います。

基本書式

struct 構造体名
{
	...
}

匿名クラス

型の定義をあらかじめすることなく(従って名前も付いていない)、利用する型を匿名型といいます。

匿名クラスには以下のような制約があります。

  • 定義可能なのはパブリック(public)メンバーのみ
  • 全てのフィールドは初期化が必須
  • static に出来ない
  • メソッドの定義も出来ない

基本書式

var x = new { プロパティ1 = 値1, プロパティ2 = 値2 };
  1. 匿名型は暗黙的型指定ローカル変数(var)を用いて宣言し、new でオブジェクトを作成します
  2. このとき型名を指定せずに、その場で { } を用いてプロパティを定義します

インターフェース

インターフェースは配下のメソッドがすべて抽象メソッドで、多重継承が可能なクラスに準じた構造です。

メソッドはすべて自動的に public abstract であるとみなされるので、アクセス修飾子やabstractキーワードは不要です。
メソッドを実装するときは、インターフェースを実装されたクラスでそのメソッドをそのまま定義しなすだけで構いません(抽象クラスのようなoverrideキーワードなどは不要です)。

基本書式

interface インターフェース名
{
	抽象メンバの定義
}

インターフェース名はクラスと区別するためにI~とするのが慣例です。

抽象クラス

抽象クラスはインスタンスを生成出来ないクラスのことで、 継承して使うことを前提としたクラスです。抽象メソッドを1個でも持つクラスが抽象クラスとなり、インスタンスを生成することはできません。また、インターフェースとは異なり、多重継承はできません。

関連記事・スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です