【C#初心者向け】クラスの基礎を徹底解説!オブジェクト指向への第一歩

C#プログラミングを次のレベルへ進める上で欠かせないのが「クラス」の理解です。クラスは、オブジェクト指向という考え方の中心にある、非常に強力な機能です。

一見すると難しそうに感じるかもしれませんが、この記事では「クラスとは何か?」から、その使い方までを、具体的な例を交えながら丁寧に解説します。


目次

クラスとは?モノの「設計図」を理解しよう

クラスとは、簡単に言うと**モノの「設計図」**です。

例えば、自動車の設計図を考えてみましょう。設計図には、自動車が持つべき「データ」(色、最高速度、ドアの数など)と、自動車ができる「動作」(走る、止まる、曲がるなど)が定義されています。

この**設計図にあたるのが「クラス」です。そして、その設計図を基に実際に作られた個々の自動車が「インスタンス(オブジェクト)」**です。

C#では、このクラスという設計図を使って、データとそれに関連する処理をひとまとめに管理します。

クラスの基本的な構文

クラスは、その「設計図」にどんなデータと動作が含まれるかを定義します。

  • クラスに所属する変数をフィールドと呼びます。(データ)
  • クラスに所属する処理をメソッドと呼びます。(動作)

サンプルコード:キャラクターの設計図 (Character クラス)

class Character
{
    // フィールド (キャラクターが持つデータ)
    public int id;
    public string name;
    public int hp;

    // メソッド (キャラクターができる動作)
    public void ShowStatus()
    {
        Console.WriteLine("ID: " + id);
        Console.WriteLine("名前: " + name);
        Console.WriteLine("HP: " + hp);
    }
}

クラスを使ってみよう(インスタンス化と利用)

設計図(クラス)を作っただけでは、それはまだただの定義です。実際に使うためには、設計図から実体(インスタンス)を作り出す必要があります。

1. インスタンスの作成

クラスからインスタンスを作成するには new キーワードを使います。これをインスタンス化と呼びます。

// Characterクラスの設計図から、player1という名前のインスタンスを生成
Character player1 = new Character();

2. フィールドとメソッドの利用

作成したインスタンスのフィールドに値を入れたり、メソッドを呼び出したりするには . (ドット) を使います。

サンプルコード全体 (Program.cs)

// Characterクラスの設計図から、player1という名前のインスタンスを生成
Character player1 = new Character();

// player1のフィールドに値を代入 (ドットでアクセス)
player1.id = 1;
player1.name = "勇者";
player1.hp = 100;

// player1のメソッドを呼び出す (ドットでアクセス)
player1.ShowStatus();

// --- 実行結果 ---
// ID: 1
// 名前: 勇者
// HP: 100

アクセス修飾子 public

先ほどのクラス定義で、フィールドやメソッドの先頭に public というキーワードが付いていました。これはアクセス修飾子と呼ばれ、そのメンバー(フィールドやメソッド)に「どこからアクセスできるか」という公開範囲を設定します。

  • public: どこからでもアクセス可能(公開)
  • private: そのクラスの内部からのみアクセス可能(非公開)
  • protected: クラス内部と、そのクラスを継承したクラスからアクセス可能

今回はクラスの外(Program.cs)からアクセスするため、public を指定しています。


なぜインスタンスを複数作成するのか?

クラス(設計図)が一つあれば、そこからデータが異なるインスタンスをいくつでも作成できます。これがクラスの非常に強力な点です。

// 1体目のキャラクター(プレイヤー)を作成
Character player1 = new Character();
player1.id = 1;
player1.name = "勇者";
player1.hp = 100;
player1.ShowStatus();

Console.WriteLine("---"); // 区切り線

// 2体目のキャラクター(敵)を作成
Character enemy1 = new Character();
enemy1.id = 101;
enemy1.name = "スライム";
enemy1.hp = 30;
enemy1.ShowStatus();

実行結果

ID: 1
名前: 勇者
HP: 100
---
ID: 101
名前: スライム
HP: 30

このように、同じ Character 設計図から、データが全く異なる「勇者」と「スライム」という2つの独立したインスタンスを作成できました。


メソッドを使いこなす

メソッドは、クラスの「動作」を定義する重要な要素です。ここでは、メソッドの基本的な使い方をさらに掘り下げます。

戻り値 (Return Value)

メソッドは、処理結果として値を返すことができます。この返す値を戻り値と呼びます。

  • 値を返さないメソッドは void を指定します。
  • 値を返す場合は、返す値の型(int, stringなど)を指定し、return キーワードで値を返します。

サンプルコード

public class Character
{
    public int hp;

    // HPが0より大きいかを判定し、bool型(true/false)の結果を返すメソッド
    public bool IsAlive()
    {
        return hp > 0;
    }
    
    // 値を返さないメソッド
    public void ShowStatus()
    {
        Console.WriteLine("HP: " + hp);
        // voidメソッドでは return; は省略可能
    }
}

// --- 使い方 ---
Character player1 = new Character();
player1.hp = 50;

bool isPlayerAlive = player1.IsAlive(); // メソッドの戻り値を変数に代入
Console.WriteLine("プレイヤーは生きているか?: " + isPlayerAlive); // True

引数 (Argument)

メソッドを呼び出す際に、外部から値を渡すことができます。この渡す値を**引数(ひきすう)**と呼びます。

サンプルコード

public class Character
{
    public string name;
    public int hp;

    // int型の引数 damageAmount を受け取り、HPを減らすメソッド
    public void TakeDamage(int damageAmount)
    {
        hp = hp - damageAmount;
        Console.WriteLine(name + "は " + damageAmount + " のダメージを受けた!");
    }
}

// --- 使い方 ---
Character player1 = new Character();
player1.name = "勇者";
player1.hp = 100;

player1.TakeDamage(30); // 30という値を引数として渡す
Console.WriteLine("残りHP: " + player1.hp);

// --- 実行結果 ---
// 勇者は 30 のダメージを受けた!
// 残りHP: 70

まとめ

今回は、C#のクラスの基本について解説しました。

  • クラスは、データ(フィールド)と動作(メソッド)をまとめた設計図
  • インスタンスは、new キーワードでクラスから作成された実体
  • インスタンスのメンバーには . (ドット) でアクセスする。
  • public などのアクセス修飾子で、外部からのアクセス可否を制御する。
  • メソッドは、戻り値で結果を返したり、引数で値を受け取ったりできる。

クラスはオブジェクト指向プログラミングの根幹をなす概念です。まずは簡単なクラスを自分で作ってみるところから、ぜひ始めてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次