クラスとは

クラスとは変数と関数をまとめたものです。

変数と関数をまとめるとなにかと便利です。たとえば、ボタンを作成する際、

  1. ボタンの文字,色,形(変数)
  2. ボタンを押した際の動作(関数)

などの様々な変数と関数を使用します。ボタン一つ作るたびにこれらの変数や関数をつくっていたら時間がかかります。

そこで、これらの変数と関数をひとまとめにクラスとして、ボタンをつくる際にこのクラスを元につくります。クラスをものに作ったものをオブジェクトといいます。

こうすれば簡単にボタンをつくれて便利です。これがクラスの考え方です。ここでは、クラスの使い方について解説します。

まとめると、

  1. クラスは変数と関数をまとめたもの
  2. クラスを定義すればクラスをもとにしたオブジェクトを簡単に作れる

となります。

クラスを使ってみる

では、クラスを使ってみます。以下のようにプログラムを作成してください。

using System;

class myclass
{
    public int x;           //クラス外でもアクセスできる
    private int y;          //クラス内でしかアクセスできない
    public void Set(int a)
    {
        y = a;
    }
    public int Add()
    {
        return x + y;
    }
}

class sample
{
    public static void Main()
    {
        myclass obj;
        obj = new myclass();

        obj.x = 1;  //xはクラス外でもアクセスできる
        obj.Set(2); //yはクラス外からアクセスできないのでSetメソッドを使用する
        Console.WriteLine(obj.Add());
    }
}

プログラムを実行すると「3」が表示されます。

クラスの使い方

ここでは,myclassというクラスをつくっています。そして、

myclass obj;

でクラスを定義して、

obj=new myclass();

でオブジェクトを生成しています。この二行をまとめて

myclass obj=new myclass();

とすることもできます。クラスの変数にアクセスするには

myclass.x

にように

「クラス.変数」でクラス内変数にアクセスします。

また、関数(メソッド)を使用したい場合は

myclass.Set(2);

のように

「クラス.メソッド」でクラス内メソッドへアクセスします。

変数の定義

myclassというクラスにはx,yと二つの変数があります。これらの変数の定義の前に

  1. public
  2. private

というものがついています。これらは、変数が外部からアクセスできるかどうかを指定します。

publicならクラス外からもアクセスでき、privateならクラス内のみアクセス可能です。

クラスを作る際にうまく活用しましょう。

メソッドの定義

クラス内関数をメソッドといいます。メソッドはクラス内で

public void Set(int a){…}

のように定義します。メソッドでもpublicやprivateでアクセスを指定できます。

コンストラクタとデコンストラクタ

クラスには初期化と終了処理という概念があります。

例えば、以下のようにプログラムを作成してみてください。

using System;

class myclass
{
    public myclass()
    {
        Console.WriteLine("コンストラクタを実行");
    }
    ~myclass()
    {
        Console.WriteLine("デコンストラクタを実行");
    }
}

class sample
{
    public static void Main()
    {
        myclass obj = new myclass();
    }
}

実行すると

「コンストラクタを実行

デコンストラクタを実行」

と表示されます。このプログラムでは

myclass obj=new myclass();

でクラスを設定するとコンストラクタ

public myclass()

が呼ばれます。そして、Mainメソッドが終わり、objが解放されるとデコンストラクタ

~myclass()

が呼ばれます。コンストラクタやデコンストラクタはメモリ制御に使用できそうですね。

静的メンバと静的クラス

Consoleというクラスはクラスを呼び出すことなしで使えました。このようなクラスを静的クラスといい、staticをつければ作成できます。

例えば、以下のようにプログラムできます。

using System;

static class myclass
{
    public static void show()
    {
        Console.WriteLine("TEST");
    }
}

class sample
{
    public static void Main()
    {
        myclass.show();
    }
}

これを実行すると「TEST」が表示されます。

static class myclass

public static void show()

とstaticを付けることで静的にしています。

静的クラスの中身はすべて静的でないとだめ

なので注意しましょう。もちろん、すべてを静的にするのではなく一部を静的にすることもできます。

using System;

class myclass
{
    public static void show()
    {
        Console.WriteLine("TEST");
    }
    public void show2()
    {
        Console.WriteLine("TEST2");
    }
}

class sample
{
    public static void Main()
    {
        myclass.show();
    }
}

この場合はshowだけが静的なので、show2はオブジェクトを作成しないと使用できません。

著者:安井 真人(やすい まさと)