C#クラス(クラス)
あなたがクラスを定義するときは、データ・タイプのための青写真を定義します。 これは実際にどのようなデータを定義していませんが、それが何を意味するのか、それは、クラスの名前を定義して、つまり、オブジェクトのクラスを構成するものとオブジェクトに対してどのような操作を行います。 オブジェクトは、クラスのインスタンスです。 クラスを構成するメソッドと変数は、クラスのメンバーになります。
クラス定義
クラスの定義は、キーワードクラスのクラス名が続き、開始することです。 クラスの本体は、中括弧のペア内に含まれます。 以下は、クラス定義の一般的な形式であります:
<アクセス指定子> class_nameクラス { //メンバ変数 <アクセス指定子> <データ型>変数1。 <アクセス指定子> <データ型>変数2; ja. <アクセス指定子> <データ型> variableN。 //メンバー・メソッド <アクセス指定子> <戻り値の型>法1(PARAMETER_LIST) { //メソッド本体 } <アクセス指定子> <戻り値の型>法2(PARAMETER_LIST) { //メソッド本体 } ja. <アクセス指定子> <戻り値の型> methodN(PARAMETER_LIST) { //メソッド本体 } }
ご注意:
- アクセス識別子<アクセス指定子>は、アクセスルールクラスとそのメンバを指定します。 指定しない場合、デフォルトのアクセス識別子。 デフォルトのアクセス識別子クラスは、デフォルトのアクセス識別子のメンバーがプライベートで、内部です。
- データタイプ<データ型>は、変数の型を指定し、戻り値の型は、<戻り値の型>は、メソッドの戻りによって返されるデータの型を指定します。
- あなたはクラスのメンバにアクセスする場合は、ドット(。)演算子を使用します。
- ドット演算子は、オブジェクトの名前とメンバーの名前をリンクします。
次の例では、これまで説明してきた概念を示しています。
システムを用いました。 名前空間BoxApplication { クラスボックス { 公共倍の長さ; //長公共ダブル幅; //幅公共ダブル高さ; //高さ} クラスBoxtester { 静的な無効メイン(文字列[] args) { ボックスBOX1 =新しいボックス(); //はBOX1を宣言し、型ボックス ボックスBox2の=新しいボックス(); //はBox2のを宣言し、型ボックス ダブルボリューム= 0.0; Box1.height = 5.0を詳述// BOX1ボリューム。 Box1.length = 6.0; Box1.breadth = 7.0; // Box2のディテールBox2.height = 10.0; Box2.length = 12.0; Box2.breadth = 13.0; // BOX1ボリュームvolume = Box1.height * Box1.length * Box1.breadth。 Console.WriteLineを( "BOX1量:{0}"、ボリューム)。 // Box2のボリュームvolume = Box2.height * Box2.length * Box2.breadth。 Console.WriteLineを( "Box2の量:{0}"、ボリューム)。 Console.ReadKey()。 } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
BOX1量:210 Box2の量:1560
メンバー関数とパッケージ
クラスのメンバ関数は、それだけで、他の変数のように、クラス定義内の定義や関数のプロトタイプです。 クラスのメンバーとして、それは、任意のオブジェクトクラスのすべてのメンバーを操作することができ、オブジェクトのクラスにアクセスすることができます。
メンバー変数は、(設計の観点からの)オブジェクトのプロパティであり、それらは、パッケージを実装するプライベート残ります。 これらの変数は、パブリックメンバ関数にアクセスするために使用することができます。
のは、クラスメンバーの異なる型の値を設定および取得するには、上記の概念を使用してみましょう:
システムを用いました。 名前空間BoxApplication { クラスボックス { プライベート倍の長さ; //長プライベートダブル幅; //幅プライベートダブル高さ; //高さの公共ボイドはsetLength(ダブルLEN) { 長= LEN。 } 公共ボイドsetBreadth(ダブルBRE) { 幅= BRE。 } ます。public void setHeight(ダブル丙) { 高さ=丙; } 公共ダブルgetVolume() { 戻り値の長さ*幅*高さ。 } } クラスBoxtester { 静的な無効メイン(文字列[] args) { ボックスBOX1 =新しいボックス(); //はBOX1を宣言し、型ボックス ボックスBox2の=新しいボックス(); //はBox2のを宣言し、型ボックス 2倍量; // // BOX1ボリュームBox1.setLengthを詳述する(6.0)。 Box1.setBreadth(7.0); Box1.setHeight(5.0); // Box2のはBox2.setLengthを詳述(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); ボリュームの// BOX1体積= Box1.getVolume(); Console.WriteLineを( "BOX1量:{0}"、ボリューム)。 ボリュームの// Box2の体積= Box2.getVolume(); Console.WriteLineを( "Box2の量:{0}"、ボリューム)。 Console.ReadKey()。 } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
BOX1量:210 Box2の量:1560
C#のコンストラクタ
クラスのコンストラクタは、新しいオブジェクトクラスを作成するときに実行される特別なクラスのメンバ関数です。
それは戻り値の型を持っていない、全く同じクラスのコンストラクタの名前。
次の例では、コンストラクタの概念を示しています。
システムを用いました。 名前空間のLineApplication { クラスライン { プライベート倍の長さ、ライン公衆回線の//長さ() { Console.WriteLineを( "オブジェクトが作成されました"); } 公共ボイドはsetLength(ダブルLEN) { 長= LEN。 } 公共の二重のgetLength() { 長さを返します。 } 静的な無効メイン(文字列[] args) { 行line =新しいライン(); //は、行の長さline.setLength(6.0)を設定します。 Console.WriteLineを( "行の長さ:{0}"、line.getLength()); Console.ReadKey()。 } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
作成されたオブジェクトの線の長さ:6
デフォルトコンストラクタは、パラメータはありません。あなたは引数を持つことができるパラメータでコンストラクタが必要な場合でも、このコンストラクタは、パラメータ化されたコンストラクタと呼ばれています。この技術は、以下の具体例を参照して、オブジェクトは初期値を割り当てることながら、オブジェクトを作成することができます:
システムを用いました。 名前空間のLineApplication { クラスライン { プライベート倍の長さ、ライン公衆回線(ダブルLEN)の//長//パラメータ化されたコンストラクタ{ Console.WriteLineを( "オブジェクトが作成された、長さ= {0}"、LEN); 長= LEN。 } 公共ボイドはsetLength(ダブルLEN) { 長= LEN。 } 公共の二重のgetLength() { 長さを返します。 } 静的な無効メイン(文字列[] args) { 行line =新しいライン(10.0); Console.WriteLineを( "行の長さ:{0}"、line.getLength()); //は、行の長さline.setLength(6.0)を設定します。 Console.WriteLineを( "行の長さ:{0}"、line.getLength()); Console.ReadKey()。 } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
オブジェクト作成された、長さ= 10 行の長さ:10 行の長さ:6
C#のデストラクタで
クラスデストラクタは、オブジェクト・タイプが範囲外である場合、特別なクラスのメンバ関数です。
名前デストラクタは接頭辞として波状(〜)で、クラスの名前の前にある、それは値を返しません、それはパラメータを受け取りません。
プログラムの最後のデストラクタリソースのリリースに先立って(など、空きメモリにファイルを閉じるなど)。 デストラクタは、継承またはオーバーロードすることはできません。
次の例では、デストラクタの概念を示しています。
システムを用いました。 名前空間のLineApplication { クラスライン { プライベート倍の長さ、ライン公衆回線の//長さ()//コンストラクタ{ Console.WriteLineを( "オブジェクトが作成されました"); } 〜ライン()//デストラクタ{ Console.WriteLineを( "オブジェクトが削除されました"); } 公共ボイドはsetLength(ダブルLEN) { 長= LEN。 } 公共の二重のgetLength() { 長さを返します。 } 静的な無効メイン(文字列[] args) { 行line =新しいライン(); //は、行の長さline.setLength(6.0)を設定します。 Console.WriteLineを( "行の長さ:{0}"、line.getLength()); } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
作成されたオブジェクトの線の長さ:6 削除されたオブジェクト
C#の静的メンバクラス
私たちは、キーワード静的クラスのメンバは静的に宣言されて使用することができます。 私たちは、クラスのメンバを宣言すると、クラスのオブジェクトが作成されたどのように多くに関係なく、静的メンバのコピーは1つだけ存在することを意味し、静的です。
キーワード静的のメンバーのインスタンスは1つだけ、そのクラスを意味します。 その値が取得するクラスクラスのインスタンスを作成する必要なく、直接呼び出すことができますので、静的変数は、定数を定義するために使用されます。 静的変数は、外部のメンバー関数やクラスの定義で初期化することができます。 また、クラス内で定義された静的変数を初期化することができます。
次の例では、静的変数の使用を示しています。
システムを用いました。 名前空間のStaticVarApplication { クラスStaticVar { パブリックstatic int型numの。 公共ボイド数() { NUM ++; } 公共int型getNum() { NUMを返します。 } } クラスStaticTester { 静的な無効メイン(文字列[] args) { StaticVar S1 =新しいStaticVar(); StaticVar S2 =新しいStaticVar(); s1.count()。 s1.count()。 s1.count()。 s2.count()。 s2.count()。 s2.count()。 Console.WriteLineを( "S1変数NUM:{0}"、s1.getNum()); Console.WriteLineを( "s2の変数numは:{0}"、s2.getNum()); Console.ReadKey()。 } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
S1変数NUM:6 s2の変数NUM:6
また、メンバ関数が staticとして宣言されて置くことができます。このような機能は、唯一の静的変数にアクセスすることができます。 オブジェクトが作成される静的関数の前に、それが存在します。 次の例では、静的関数の使用方法を示しています。
システムを用いました。 名前空間のStaticVarApplication { クラスStaticVar { パブリックstatic int型numの。 公共ボイド数() { NUM ++; } パブリックstatic int型getNum() { NUMを返します。 } } クラスStaticTester { 静的な無効メイン(文字列[] args) { StaticVar S =新しいStaticVar(); s.count()。 s.count()。 s.count()。 Console.WriteLineを( "変数NUM:{0}"、StaticVar.getNum()); Console.ReadKey()。 } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
変数NUM:3