Megosztás:


osztály (C# referencia)

Osztályokat deklarál a class kulcsszó használatával az alábbi példában látható módon:

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

A C# csak egyetlen öröklést támogat. 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.

A C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.

A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.

Jótanács

Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.

Az osztályokról, a felületekről és az öröklésről további információt az öröklésről szóló cikk tartalmaz az alapvető tudnivalók című szakaszban.

Az osztályokat közvetlenül egy névtéren belül deklarálhatja. Ezeket az osztályokat ne fészkelje be más osztályokba. Ezeket az osztályokat publicinternalvagy . Alapértelmezés szerint az osztályok a következők internal: .

Deklarálhatja az osztálytagokat, beleértve a beágyazott osztályokat is, például public, protected internal, protected, internal, privatevagy private protected. Alapértelmezés szerint a tagok a következők 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 age), két nyilvános konstruktort és egy nyilvános metódust tartalmaz. A második osztály tartalmazza StringTestMaina .

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

A privát mezőket (name és age) csak az osztály nyilvános metódusával érheti el Child . Például nem nyomtathatja ki a gyermek nevét a metódusból az Main 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 tagja az osztálynak. Az osztályon belül hozzáférési módosító nélkül deklarált típusok alapértelmezett értéke private, így a példában szereplő adattagok továbbra is private a kulcsszó eltávolításakor lesznek. Végül 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 van 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