1. クラス定義
クラスの定義には class キーワードを使用する必要があり、構文形式は次のとおりです。
<access specifier> class class_name
{
<access specifier> <data type> variable1;
<access specifier> <data type> variable2;
…
<access specifier> <data type> variableN;
<access specifier> <return type> method1(parameter_list)
{
}
<access specifier> <return type> method2(parameter_list)
{
//
}
…
<access specifier> <return type> methodN(parameter_list)
{
//
}
}
構文は次のように説明されます。
- <access specifier> は、クラスまたはクラスのメンバーのアクセス ルールを指定するために使用されるアクセス修飾子です。無視できます。指定しない場合は、デフォルトのアクセス修飾子が使用されます。クラスのデフォルトのアクセス修飾子クラス内のメンバーのデフォルトのアクセス修飾子はプライベートです。
- class_name はクラスの名前です。
- <data type> はデータのタイプであり、メンバー属性のデータのタイプを指定するために使用されます。
- variable1、variable2 などは、変数名と同様のメンバー属性の名前です。
- <return type> は戻り値の型で、メンバー関数の戻り値の型を指定するために使用されます。
- method1、method2 などはメンバー関数の名前です。
2. オブジェクト
クラスとオブジェクトは異なる概念であり、クラスはオブジェクトのタイプを決定しますが、オブジェクト自体を決定するわけではありません。また、クラスは開発段階で作成されますが、オブジェクトはプログラムの実行時に作成されます。オブジェクトはクラスに基づいて作成されたエンティティと考えることができるため、オブジェクトはクラスのインスタンスと呼ぶこともできます。
クラスのインスタンスを作成するには、 new キーワードを使用する必要があります。Student という名前のクラスを作成し、このクラスのオブジェクトを作成する場合、構文は次のようになります。
Student Object = new Student();
上記の例では、前の Student が作成するオブジェクト タイプであり、Object は Student クラス インスタンス (Student クラスのオブジェクト) のメモリ アドレスを参照する変数です。ここでの new キーワードの役割は主に、プログラムの実行時にクラスのインスタンスにメモリを割り当てることです。
さらに、 new キーワードを使用して Student クラスをインスタンス化せずに、通常の変数を作成するのと同様に Student タイプの変数のみを作成することもできます。次に例を示します。
Student Object2;
ただし、現時点では Object2 は Student 型の通常の変数にすぎず、割り当てられていないため、Object2 を使用してオブジェクト内のプロパティやメソッドにアクセスすることはできないため、この書き方を使用することはお勧めできません。 Object2 を使用する必要がある場合は、次のように、すでに作成されているオブジェクトをそれに割り当てることができます。
Student Object3 = new Student();
Student Object2 = Object3;
上の例の Object2 と Object3 は同じ Student オブジェクトを指しているため、Object3 を使用した Student オブジェクトに対する操作は Object2 にも影響します。
オブジェクトの作成後、オブジェクトを通じてクラスのメンバーにアクセスする場合は、次のように、ドット.
演算子を使用してオブジェクトの名前とメンバーの名前を接続する必要があります。
Student Object = new Student();
Object.method();
Object.variable;
ここでは、クラスとオブジェクトの具体的な使用法を示すいくつかの例を示します。
[例] いくつかのメンバー プロパティとメンバー メソッドを含む public Student クラスを作成し、このクラスをインスタンス化し、クラス オブジェクトを通じてクラス内のメンバー プロパティとメンバー メソッドを呼び出します。
using System;
namespace it-kiso.com
{
class Demo
{
static void Main(string[] args)
{
Student stu1 = new Student();
Student stu2 = new Student();
stu1.insert(101, "Yamada", "男", 18);
stu1.display();
stu2.insert(102, "Takahashi", "女", 16);
stu2.display();
}
}
public class Student{
public int id;
public string name;
public string sex;
public int age;
public void insert(int i, string n, string s, int a){
id = i;
name = n;
sex = s;
age = a;
}
public void display(){
Console.WriteLine("Id:{0} Name:{1} Sex:{2} age:{3}", id, name, sex, age);
}
}
}
操作の結果は次のようになります。
Id:101 Name:Yamada Sex:男 age:18
Id:102 Name:Takahashi Sex:女 age:16