class (Referenční dokumentace jazyka C#)

Třídy jsou deklarovány pomocí klíčového slova class, jak je znázorněno v následujícím příkladu:

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

Poznámky

V jazyce C# je povolená pouze jedna dědičnost. Jinými slovy, třída může dědit implementaci pouze z jedné základní třídy. Třída však může implementovat více než jedno rozhraní. Následující tabulka ukazuje příklady dědičnosti tříd a implementace rozhraní:

Dědičnost Příklad
Nic class ClassA { }
Jeden class DerivedClass : BaseClass { }
Žádné, implementuje dvě rozhraní. class ImplClass : IFace1, IFace2 { }
Jedno, implementuje jedno rozhraní. class ImplDerivedClass : BaseClass, IFace1 { }

Třídy, které deklarujete přímo v oboru názvů, ne vnořené do jiných tříd, mohou být veřejné nebo interní. Třídy jsou internal ve výchozím nastavení.

Členy třídy, včetně vnořených tříd, můžou být veřejné, chráněné interní, chráněné, interní, soukromé nebo soukromé. Členové jsou private ve výchozím nastavení.

Další informace naleznete v tématu Modifikátory accessu.

Můžete deklarovat obecné třídy, které mají parametry typu. Další informace naleznete v tématu Obecné třídy.

Třída může obsahovat deklarace následujících členů:

Příklad

Následující příklad ukazuje deklarování polí třídy, konstruktorů a metod. Ukazuje také vytváření instancí objektů a tisk dat instance. V tomto příkladu jsou deklarovány dvě třídy. První třída obsahuje Childdvě soukromá pole (name a age), dva veřejné konstruktory a jednu veřejnou metodu. Druhá třída , StringTestje použita k zahrnutí 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.
*/

Komentáře

Všimněte si, že v předchozím příkladu jsou privátní pole (name a age) přístupná pouze prostřednictvím veřejné metody Child třídy. Nemůžete například vytisknout jméno dítěte z Main metody pomocí příkazu, jako je tento:

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

Přístup k soukromým členům ChildMain z by byl možný pouze v případě, že Main by byl členem třídy.

Typy deklarované uvnitř třídy bez modifikátoru přístupu mají výchozí privatehodnotu , takže datové členy v tomto příkladu by stále byly private , kdyby bylo klíčové slovo odebráno.

Nakonec si všimněte, že pro objekt vytvořený pomocí konstruktoru bez parametrů (child3), age pole bylo inicializováno na nulu ve výchozím nastavení.

specifikace jazyka C#

Další informace najdete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také