Udostępnij za pośrednictwem


Klasa (C# odniesienia)

Klasy zadeklarowane za pomocą słowa kluczowego class, jak pokazano w poniższym przykładzie:

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

Uwagi

Tylko pojedynczego dziedziczenia jest dozwolony w C#.Innymi słowy klasa może odziedziczyć wykonania tylko jedną klasę bazową.Jednakże klasy można zaimplementować więcej niż jeden interfejs.W poniższej tabeli przedstawiono przykłady dziedziczenie klas i implementacji interfejsu:

Dziedziczenie

Przykład

Brak

class ClassA { }

Pojedyncze

class DerivedClass: BaseClass { }

Brak, implementuje dwa interfejsy

class ImplClass: IFace1, IFace2 { }

Pojedyncze, implementuje jeden interfejs

class ImplDerivedClass: BaseClass, IFace1 { }

Klasy, które zadeklarować bezpośrednio w obszarze nazw, nie są zagnieżdżone w innych klas, mogą być publicznych lub wewnętrzny.Klasy są internal domyślnie.

Członków klasy, w tym klas zagnieżdżonych, może być publicznych, protected internal, chronione, wewnętrzny, lub prywatne.Członkowie są prywatne domyślnie.

Aby uzyskać więcej informacji, zobacz Modyfikatory dostępu (Podręcznik programowania C#).

Można zadeklarować klas rodzajowych, które mają parametry typu.Aby uzyskać więcej informacji, zobacz Klas rodzajowych.

Klasa może zawierać deklaracje następujące elementy:

Przykład

Poniższy przykład ilustruje deklarujący klasy pola, konstruktorów i metod.Ilustruje też podczas tworzenia wystąpienia obiektu i drukowanie danych wystąpienia.W tym przykładzie dwie klasy są zadeklarowane, Child klasy, która zawiera dwa pola prywatne (name i age) i dwie metody publiczne.Do drugiej klasy StringTest, zawiera 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.
*/

Komentarze

Zawiadomienia w powyższym przykładzie, że pola private (name i age) mogą być dostępne za pośrednictwem metody publiczne z Child klasy.Na przykład, nie można drukować nazwę dziecka, z Main metodę, za pomocą instrukcji w następujący sposób:

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

Uzyskiwanie dostępu do prywatnych elementów członkowskich z Child z Main jest możliwa tylko jeśli Main były członkami tej klasy.

Typy zadeklarowane wewnątrz klasy bez domyślnego modyfikator dostępu do private, więc nadal będzie elementów członkowskich danych, w tym przykładzie private Jeśli usunięto słowo kluczowe.

Warto zauważyć, że dla obiektów utworzonych przy użyciu konstruktora domyślnego (child3), wiek, pole zostało zainicjowane do zera, domyślna.

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka to najlepsze źródło informacji dotyczących składni i zastosowania języka C#.

Zobacz też

Informacje

Słowa kluczowe języka C#

Typy odwołań (C# odniesienia)

Koncepcje

Podręcznik programowania C#

Inne zasoby

C# odniesienia