クラス
c#におけるクラスとは、簡単に言うと、各々で定義する処理を目的や種類別にまとめておける仕組みで、ものづくりの設計図によく例えられます。
- どの変数が、何を記録しているのか?
- どのメソッドが、どんな処理を行うのか?
といった事がわかりやすくなるメリットがあります。
実際のクラス定義は以下の様に行います。
class Actor{
string name;
}
これで、string型のnameという変数を持ったクラスを宣言できました。
変数nameの様に、クラスが持つ変数を「メンバー変数」と呼びます。
今回の場合、メンバー変数を一緒に宣言する事で、nameという情報を持ったActorの設計図と作ったことになります。
また、C#において、クラスは絶対的なルールとして扱われます。
その為、クラスを作らずに変数やメソッドを定義する事はできません。
この様に変数やメソッドをはじめとする要素それぞれが目的を持ち、グループ分けされる様な構造の言語をオブジェクト指向言語と言います。
オブジェクト指向に関しては、例えばC#で、Unityなどのゲームエンジンで開発する際は、特にわかりやすいかもしれません。
ゲーム上では、シーン上に出現する物体を、プレイヤーキャラクターや、敵キャラクター、背景、動作、音楽の様な、各々の目的と特性を持ったオブジェクトとして扱う為、役割が明確ですね。
インスタンス
さて、クラスというグループを作り、物を作る設計図ができました。
この中に実際のボタンやキャラクターなどのオブジェクトを流し込んでいきます。
ここで、インスタンスという物を説明します。
一言で言うと、キャラクターの様な、クラスを元に作られた実体がインスタンスです。
具体的には、new演算子を用いて以下の様に生成します。
Actor act = new Actor();
何をやっているのかを解説すると、以下の様になります。
クラス名 インスタンス名 = new クラス名();
ここで、C#における変数の宣言方法を思い出してください。
型 変数名 = 値;
というコードで変数に値を代入するというルールがあります。
これはインスタンスを生成する際にも同様で、
new演算子を用いてインスタンス生成する際の、最初のクラス名は、データ型に相当します。
つまり、何が起きているのかというと
クラスを生成すると、そのクラスに対応した新しい型が出来上がるのです。
その為、インスタンスを生成すると、「クラス生成時に同時に生まれた新しい型」の変数に
「新しいインスタンス」が値として代入されます。
ここまでで、クラスの宣言と、からのインスタンスが生成されました。
クラスと一緒に、メンバー変数も宣言していますので、メンバー変数の中身も代入しましょう。
先ほどインスタンスを代入した変数actに対して、以下の様にするとメンバー変数nameに値を代入できます。
act.name = "太郎";
これで、Actorクラスから太郎というnameを持ったインスタンスが出来上がりました。