次の方法で共有


クラス (C# リファレンス)

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

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

C# では、単一の継承のみがサポートされます。 つまり、クラスは 1 つの基底クラスからのみ実装を継承できます。 ただし、クラスは複数のインターフェイスを実装できます。

C# 言語リファレンスには、C# 言語の最新リリース バージョンが記載されています。 また、今後の言語リリースのパブリック プレビューの機能に関する初期ドキュメントも含まれています。

このドキュメントでは、言語の最後の 3 つのバージョンまたは現在のパブリック プレビューで最初に導入された機能を特定します。

ヒント

C# で機能が初めて導入された時期を確認するには、 C# 言語バージョン履歴に関する記事を参照してください。

クラス、インターフェイス、継承の詳細については、「基礎」セクションの 継承 に関する記事を参照してください。

名前空間内でクラスを直接宣言できます。 これらのクラスを他のクラス内に入れ子にしないでください。 これらのクラスは、 public または internalにすることができます。 既定では、クラスは internal

入れ子になったクラスを含むクラス メンバーは、 publicprotected internalprotectedinternalprivate、または private protectedとして宣言できます。 既定では、メンバーは private

詳細については、「 アクセス修飾子」を参照してください。

型パラメーターを持つジェネリック クラスを宣言できます。 詳細については、「 ジェネリック クラス」を参照してください。

クラスには、次のメンバーの宣言を含めることができます。

次の例では、クラス フィールド、コンストラクター、およびメソッドの宣言を示します。 また、オブジェクトのインスタンス化とインスタンス データの印刷も示します。 この例では、2 つのクラスが宣言されています。 最初のクラス Childには、2 つのプライベート フィールド (nameage)、2 つのパブリック コンストラクター、および 1 つのパブリック メソッドが含まれています。 2 番目のクラス StringTestには、 Mainが含まれています。

class Child
{
    private int age;
    private string name;

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

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

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

class StringTest
{
    static void Main()
    {
        // Create objects by using the new operator:
        Child child1 = new Child("Craig", 11);
        Child child2 = new Child("Sally", 10);

        // Create an object using the default constructor:
        Child child3 = new Child();

        // Display results:
        Console.Write("Child #1: ");
        child1.PrintChild();
        Console.Write("Child #2: ");
        child2.PrintChild();
        Console.Write("Child #3: ");
        child3.PrintChild();
    }
}
/* Output:
    Child #1: Craig, 11 years old.
    Child #2: Sally, 10 years old.
    Child #3: N/A, 0 years old.
*/

コメント

プライベート フィールド (nameage) には、 Child クラスのパブリック メソッドを使用してのみアクセスできます。 たとえば、次のようなステートメントを使用して、 Main メソッドから子の名前を出力することはできません。

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

MainからChildのプライベート メンバーにアクセスできるのは、Mainがクラスのメンバーである場合のみです。 アクセス修飾子を使用せずにクラス内で宣言された型は既定で privateされるため、この例のデータ メンバーは、キーワードが削除された場合でも private されます。 最後に、パラメーターなしのコンストラクター (child3) を使用して作成されたオブジェクトの場合、 age フィールドは既定で 0 に初期化されます。

C# 言語仕様

詳細については、C# 言語仕様のを参照してください。 言語仕様は、C# の構文と使用法の決定的なソースです。

こちらも参照ください