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


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

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

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

Замечания

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

Наследство Пример
Отсутствует class ClassA { }
Один class DerivedClass : BaseClass { }
Нет, реализует два интерфейса class ImplClass : IFace1, IFace2 { }
Единый, реализует один интерфейс class ImplDerivedClass : BaseClass, IFace1 { }

Классы, объявляемые непосредственно в пространстве имен, не вложенные в другие классы, могут быть общедоступными или внутренними. Классы по internal умолчанию.

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

См. также