Поделиться через


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

Объявите классы с помощью ключевого class слова, как показано в следующем примере:

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

C# поддерживает только одно наследование. Другими словами, класс может наследовать реализацию только одного базового класса. Однако класс может реализовать несколько интерфейсов.

Справочные документы по языку C# описывают последнюю выпущенную версию языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.

Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.

Подсказка

Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей об истории версий языка C#.

Дополнительные сведения о классах, интерфейсах и наследовании см. в статье по наследованию в разделе основы.

Классы можно объявлять непосредственно в пространстве имен. Не вложены эти классы в другие классы. Эти классы можно сделать либо publicinternal. По умолчанию классы являются internal.

Можно объявить члены класса, включая вложенные классы, как public, protected internal, protected, internal, privateили private protected. По умолчанию члены .private

Дополнительные сведения см. в статье Модификаторы доступа.

Можно объявить универсальные классы с параметрами типа. Дополнительные сведения см. в разделе "Универсальные классы".

Класс может содержать объявления следующих членов:

Пример

В следующем примере показано объявление полей класса, конструкторов и методов. Он также демонстрирует экземпляры объектов и данные экземпляра печати. В этом примере объявляются два класса. Первый класс Childсодержит два частных поля (name и age), два открытых конструктора и один открытый метод. Второй класс, StringTestсодержит 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.
*/

Комментарии

Доступ к частным полям (name и age) можно получить только через общедоступный метод Child класса. Например, нельзя распечатать имя дочернего элемента из метода с помощью следующей Main инструкции:

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

Доступ к закрытым Child членам из Main этого класса возможен только в том случае, если Main он является членом класса. Типы, объявленные внутри класса без модификатора доступа по умолчанию private, поэтому члены данных в этом примере по-прежнему удаляются private , если ключевое слово удалено. Наконец, для объекта, созданного с помощью конструктора без параметров (child3), age поле инициализируется до нуля по умолчанию.

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

Дополнительные сведения см. в спецификации языка C#. Спецификация языка является авторитетным источником синтаксиса и использования языка C#.

См. также