класс (Справочник по C#)class (C# Reference)

Классы объявляются с помощью ключевого слова class, как показано в следующем примере: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.
}

ПримечанияRemarks

В C# допускается только одиночное наследование.Only single inheritance is allowed in C#. Другими словами, класс может наследовать реализацию только от одного базового класса.In other words, a class can inherit implementation from one base class only. Однако класс может реализовывать несколько интерфейсов.However, a class can implement more than one interface. В таблице ниже приведены примеры наследования класса и реализации интерфейса.The following table shows examples of class inheritance and interface implementation:

НаследованиеInheritance ПримерExample
НетNone class ClassA { }
SingleSingle class DerivedClass: BaseClass { }
Отсутствует, реализует два интерфейсаNone, implements two interfaces class ImplClass: IFace1, IFace2 { }
Одиночное, реализует один интерфейсSingle, implements one interface class ImplDerivedClass: BaseClass, IFace1 { }

Классы, объявленные непосредственно в пространстве имен и не вложенные в другие классы, могут быть открытыми или внутренними.Classes that you declare directly within a namespace, not nested within other classes, can be either public or internal. По умолчанию классы являются internal.Classes are internal by default.

Члены класса, включая вложенные классы, могут объявляться с типом доступа public, protected internal, protected, internal, private или private protected.Class members, including nested classes, can be public, protected internal, protected, internal, private, or private protected. По умолчанию члены имеют тип доступа private.Members are private by default.

Дополнительные сведения см. в статье Модификаторы доступа.For more information, see Access Modifiers.

Можно объявить универсальные классы, имеющие параметры типа.You can declare generic classes that have type parameters. Дополнительные сведения см. в разделе Универсальные классы.For more information, see Generic Classes.

Класс может содержать объявления следующих членов:A class can contain declarations of the following members:

ПримерExample

В приведенном ниже примере показано объявление полей, конструкторов и методов класса.The following example demonstrates declaring class fields, constructors, and methods. В нем также демонстрируется создание экземпляра объекта и печать данных экземпляра.It also demonstrates object instantiation and printing instance data. В этом примере объявляются два класса.In this example, two classes are declared. Первый класс, Child, содержит два частных поля (name и age), два общих конструктора и один общий метод.The first class, Child, contains two private fields (name and age), two public constructors and one public method. Второй класс, StringTest, используется для хранения Main.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.
*/

КомментарииComments

Обратите внимание, что в предыдущем примере доступ к частным полям (name и age) возможен только с помощью общих методов класса Child.Notice that in the previous example the private fields (name and age) can only be accessed through the public method of the Child class. Например, имя ребенка нельзя напечатать из метода Main с помощью следующего оператора:For example, you cannot print the child's name, from the Main method, using a statement like this:

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

Получить доступ к закрытым членам класса Child из метода Main можно было бы лишь в том случае, если бы Main был членом класса.Accessing private members of Child from Main would only be possible if Main were a member of the class.

Типы, объявленные в классе без модификатора доступа, по умолчанию являются private, поэтому члены данных в этом примере останутся private, если ключевые слова будут удалены.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.

Наконец, обратите внимание, что для объекта, созданного с помощью конструктора без параметров (child3), поле age по умолчанию инициализировано с нулевым значением.Finally, notice that for the object created using the parameterless constructor (child3), the age field was initialized to zero by default.

Спецификация языка C#C# language specification

Дополнительные сведения см. в спецификации языка C#.For more information, see the C# Language Specification. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.The language specification is the definitive source for C# syntax and usage.

См. такжеSee also