Megosztás a következőn keresztül:


osztály (C# referencia)

Az osztályok a kulcsszó classhasználatával vannak deklarálva, ahogyan az a következő példában is látható:

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

Megjegyzések

A C#-ban csak egyetlen öröklés engedélyezett. Más szóval egy osztály csak egy alaposztálytól örökölheti a megvalósítást. Az osztály azonban több felületet is képes implementálni. Az alábbi táblázat példákat mutat be az osztályöröklésre és a felület implementálására:

Öröklődés Példa
Egyik sem class ClassA { }
Egyszeres class DerivedClass : BaseClass { }
Nincs, két felületet implementál class ImplClass : IFace1, IFace2 { }
Egyetlen, egyetlen felületet implementál class ImplDerivedClass : BaseClass, IFace1 { }

Azok az osztályok, amelyeket közvetlenül egy névtéren belül deklarál, nem más osztályokba ágyazva, lehetnek nyilvánosak vagy belsőek. Az osztályok alapértelmezés szerint.internal

Az osztálytagok, beleértve a beágyazott osztályokat is, lehetnek nyilvánosak, védettek belső, védett, belső, privát vagy privát védelem alatt. A tagok alapértelmezés szerint.private

További információ: Access Modifiers.

A típusparaméterekkel rendelkező általános osztályok deklarálhatók. További információ: Általános osztályok.

Az osztály a következő tagok deklarációit tartalmazhatja:

Példa

Az alábbi példa az osztálymezők, konstruktorok és metódusok deklarálását mutatja be. Emellett bemutatja az objektumpéldány-példányok és a példányadatok nyomtatását is. Ebben a példában két osztály van deklarálva. Az első osztály Childkét privát mezőt (name és), két nyilvános konstruktort és ageegy nyilvános metódust tartalmaz. A második osztály a StringTestkövetkezőt tartalmazza 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.
*/

Megjegyzések

Figyelje meg, hogy az előző példában a privát mezők (name és age) csak az osztály nyilvános metódusával Child érhetők el. Például nem nyomtathatja ki a gyermek nevét a Main metódusból az alábbihoz hasonló utasítással:

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

A privát tagok ChildMain elérése csak akkor lehetséges, ha Main az osztály tagja lenne.

Az osztályon belül a hozzáférési módosító alapértelmezés privateszerint nem deklarált típusok, így a példában szereplő adattagok továbbra is a kulcsszó eltávolítása esetén lennének private .

Végül figyelje meg, hogy a paraméter nélküli konstruktor (child3) használatával létrehozott objektum esetében a age mező alapértelmezés szerint nullára lett inicializálva.

C# nyelvspecifikáció

További információkért lásd a C# nyelvi specifikációját. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.

Lásd még