次の方法で共有


class (C# リファレンス)

クラスは、次の例に示すように、class キーワードを使用して宣言します。

      class TestClass
{
    // Methods, properties, fields, events, delegates 
    // and nested classes go here.
}

解説

C++ とは異なり、C# で許可される継承は 1 つだけです。つまり、1 つの基本クラスの実装だけを継承できます。ただし、クラスは複数のインターフェイスを実装できます。クラスの継承とインターフェイスの実装の例を次の表に示します。

継承

なし。

class ClassA { }

1 つ

class DerivedClass: BaseClass { }

なし。2 つのインターフェイスを実装。

class ImplClass: IFace1, IFace2 { }

1 つ。1 つのインターフェイスを実装。

class ImplDerivedClass: BaseClass, IFace1 { }

アクセス レベルの protectedprivate は、入れ子になったクラスだけで使用できます。

型パラメータを持つジェネリック クラスも宣言できます。詳細については、「ジェネリック クラス (C# プログラミング ガイド)」を参照してください。

クラスは、次のメンバを宣言できます。

使用例

ここでは、クラスのフィールド、コンストラクタ、メソッドの宣言例を示します。オブジェクト インスタンスの作成、インスタンス データの出力の例も示します。この例では、2 つのクラスを宣言します。Kid クラスには、2 つのプライベート フィールド (name および age) と、2 つのパブリック メソッドがあります。2 番目のクラスである MainClass は、Main の格納に使用されます。

// keyword_class.cs
// class example
using System;
class Kid
{
    private int age;
    private string name;

    // Default constructor:
    public Kid()
    {
        name = "N/A";
    }

    // Constructor:
    public Kid(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    // Printing method:
    public void PrintKid()
    {
        Console.WriteLine("{0}, {1} years old.", name, age);
    }
}

class MainClass
{
    static void Main()
    {
        // Create objects
        // Objects must be created using the new operator:
        Kid kid1 = new Kid("Craig", 11);
        Kid kid2 = new Kid("Sally", 10);

        // Create an object using the default constructor:
        Kid kid3 = new Kid();

        // Display results:
        Console.Write("Kid #1: ");
        kid1.PrintKid();
        Console.Write("Kid #2: ");
        kid2.PrintKid();
        Console.Write("Kid #3: ");
        kid3.PrintKid();
    }
}

出力

Kid #1: Craig, 11 years old.
Kid #2: Sally, 10 years old.
Kid #3: N/A, 0 years old.

説明

上記の例で、プライベート フィールド (name および age) にアクセスできるのは、Kid クラスのパブリック メソッドだけであることに注意してください。たとえば、次のステートメントを使用して Main メソッドから子供の名前を出力できません。

Console.Write(kid1.name);   // Error

Main から Kid のプライベート メンバへのアクセスは、Main がそのクラスのメンバである場合にのみ可能です。

アクセス修飾子を指定せずにクラス内で宣言された型は、既定では private になるため、この例のデータ メンバは、キーワードが削除されても、private のままです。

また、既定のコンストラクタを使って作成したオブジェクト (kid3) は、既定では、年齢フィールドが 0 に初期化されることに注意してください。

C# 言語仕様

詳細については、「C# 言語仕様」の次のセクションを参照してください。

  • 1.6 クラスとオブジェクト

  • 3.4.4 クラスのメンバ

  • 4.2.1 クラス型

  • 10 クラス

参照

関連項目

C# のキーワード
参照型 (C# リファレンス)

概念

C# プログラミング ガイド

その他の技術情報

C# リファレンス