みなさんこんにちは
ナダルのフォームは他の男子プロと比べても独特で力強くてかっこいいですよね。技のフェデラー、力のナダルみたいで見ていて惚れ惚れしてしまいます。さて今回は、C#言語のもっとも大切だというクラスについてやっていきます。
クラスとは?
我々が知るクラスという名前はせいぜい学校のクラスくらいですよね。もしくはレベルみたいな意味合いの”最強クラス”とかそこらへんですね。C#言語におけるクラスとは、色々な説明を照らし合わせると「設計図」とか「レシピ」のような意味合いで使われているようです。そしてそのレシピを元に実際に作られたものを「オブジェクト」もしくは「インスタンス」と言います。
今までは簡単にMainメソッドのみのクラスを定義してきました。
こんな具合に。このpublic static void Main()の中だけでやってきましたね。これはMainメソッドを含むBruno008クラスを定義していたわけです。「定義する」とは「中に記述する」ことです。
メソッドのようなクラスを構成するもののことを「メンバ(member)」と言います。メンバはメソッドのように機能を記述するものとデータを記述するものの2つに大別されます。データを記述するものを「クラス変数(class variable)」と言います。もっとも単純なクラス変数は「インスタンスフィールド」と呼ばれます。次のように宣言します。
アクセス修飾子 データ型 変数名;
例)public int ScoreOfTest;
アクセス修飾子とはそのメンバへのアクセス制限です。基本的な2つを紹介しておきます。
・private修飾子....(私的な)という意味で、そのクラスのみからしかアクセスできないようにします
・public修飾子.....(公的な)という意味で、どこからでもアクセスできるようにします(つまり無制限)
ちなみにこの修飾子を省略した場合はprivateとみなされます。
インスタンスフィールドしか持たないクラスは次のように作ります。
class クラス名
{
アクセス修飾子 データ型 インスタンスフィールド名1;
アクセス修飾子 データ型 インスタンスフィールド名2;
......;
}
例)
class Bruno
{
public int myage;
public string myname;
public double myweight;
}
publicなインスタンスフィールドを3つもつBrunoクラスを定義してみました。これだけでは設計図だけなので作られてはいません。生成するには配列などの時のようにnew演算子を使います。
クラス名 インスタンス名;
インスタンス名 = new クラス名();
例)
Bruno b;
b = new Bruno();
なんかすごいややこしいですね。例によって宣言と生成を同時に行ってみましょう。
Bruno b = new Bruno();
メンバにアクセスするには大きい単位から順に . (ドット)を使って書いていきます。
インスタンス名.メンバ
例)
b.myage
では簡単なクラスを作ってそのインスタンス変数に代入するプログラムを組んでみます。
Bruno008 クラスで定義されている public なインスタンス x に Bruno009 のMainメソッドが生成を行ってから10を代入して、それを映し出しています。12行目で新しくオブジェクトを生成していますね。
いかがでしたでしょうか。とりあえず今回はクラスと簡単なインスタンスフィールドの生成をまとめてみました。次回は実際の動き(機能)を定めるメソッドについてまとめていきたいと思います。