class (odwołanie w C#)class (C# Reference)

Klasy są deklarowane za pomocą classsłowa kluczowego, jak pokazano w następującym przykładzie:Classes are declared using the keyword class, as shown in the following example:

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

UwagiRemarks

W programie C#można używać tylko jednego dziedziczenia.Only single inheritance is allowed in C#. Innymi słowy, Klasa może dziedziczyć implementację tylko z jednej klasy bazowej.In other words, a class can inherit implementation from one base class only. Jednak Klasa może zaimplementować więcej niż jeden interfejs.However, a class can implement more than one interface. W poniższej tabeli przedstawiono przykłady dziedziczenia klas i implementacji interfejsu:The following table shows examples of class inheritance and interface implementation:

DziedziczenieInheritance PrzykładExample
BrakNone class ClassA { }
SingleSingle class DerivedClass: BaseClass { }
Brak, implementuje dwa interfejsyNone, implements two interfaces class ImplClass: IFace1, IFace2 { }
Single, implementuje jeden interfejsSingle, implements one interface class ImplDerivedClass: BaseClass, IFace1 { }

Klasy zadeklarowane bezpośrednio w przestrzeni nazw, a nie zagnieżdżone w innych klasach, mogą być publiczne lub wewnętrzne.Classes that you declare directly within a namespace, not nested within other classes, can be either public or internal. Klasy są internal domyślnie.Classes are internal by default.

Elementy członkowskie klasy, w tym klasy zagnieżdżone, mogą być publiczne, chronione wewnętrznie, chronione, wewnętrzne, prywatnei prywatne.Class members, including nested classes, can be public, protected internal, protected, internal, private, or private protected. Elementy członkowskie private są domyślnie.Members are private by default.

Aby uzyskać więcej informacji, zobacz Modyfikatory dostępu.For more information, see Access Modifiers.

Można zadeklarować klasy ogólne z parametrami typu.You can declare generic classes that have type parameters. Aby uzyskać więcej informacji, zobacz klasy ogólne.For more information, see Generic Classes.

Klasa może zawierać deklaracje następujących elementów członkowskich:A class can contain declarations of the following members:

PrzykładExample

Poniższy przykład demonstruje deklarowanie pól klasy, konstruktorów i metod.The following example demonstrates declaring class fields, constructors, and methods. Ilustruje także tworzenie wystąpień obiektów i drukowanie danych wystąpienia.It also demonstrates object instantiation and printing instance data. W tym przykładzie zadeklarowane są dwie klasy.In this example, two classes are declared. Pierwsza klasa, Child, zawiera dwa prywatne pola (name i age), dwa konstruktory publiczne i jedną metodę publiczną.The first class, Child, contains two private fields (name and age), two public constructors and one public method. Druga klasa, StringTest,,, jest używana do Mainprzechowywania.The second class, StringTest, is used to contain 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.
*/

KomentarzeComments

Zwróć uwagę, że w poprzednim przykładzie pola prywatne (name i age) można uzyskać dostęp tylko za pomocą metody Child publicznej klasy.Notice that in the previous example the private fields (name and age) can only be accessed through the public method of the Child class. Na przykład nie można wydrukować nazwy elementu podrzędnego z Main metody przy użyciu instrukcji podobnej do następujących:For example, you cannot print the child's name, from the Main method, using a statement like this:

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

Uzyskiwanie dostępu do Child prywatnych Main elementów członkowskich z programu byłoby Main możliwe tylko wtedy, gdy należały do klasy.Accessing private members of Child from Main would only be possible if Main were a member of the class.

Typy zadeklarowane wewnątrz klasy bez modyfikatora dostępu domyślnie do private, dlatego elementy członkowskie danych w tym przykładzie private nadal byłyby, jeśli słowo kluczowe zostało usunięte.Types declared inside a class without an access modifier default to private, so the data members in this example would still be private if the keyword were removed.

Na koniec należy zauważyć, że dla obiektu utworzonego przy użyciu konstruktora bez parametrówchild3() age pole zostało domyślnie zainicjowane do zera.Finally, notice that for the object created using the parameterless constructor (child3), the age field was initialized to zero by default.

specyfikacja języka C#C# language specification

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#.For more information, see the C# Language Specification. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.The language specification is the definitive source for C# syntax and usage.

Zobacz takżeSee also