класс (Справочник по C#)
Классы объявляются с помощью ключевого слова class, как показано в следующем примере.
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
Заметки
Только разрешено единичное наследование в C-#.Другими словами, класс может наследовать реализацию только от одного базового класса.Однако класс может реализовать несколько интерфейсов.В приведенной ниже таблице приведены примеры наследования класса и реализации интерфейса.
Наследование |
Пример |
---|---|
None |
class ClassA { } |
Single |
class DerivedClass: BaseClass { } |
Отсутствует, реализует два интерфейса |
class ImplClass: IFace1, IFace2 { } |
Одиночное, реализует один интерфейс |
class ImplDerivedClass: BaseClass, IFace1 { } |
Классы, объявляемому непосредственно в пространстве имен, не вложенные в другие классы, могут быть открытый или внутренний.Класс internal по умолчанию.
Члены класса, включая вложенные классы, могут быть protected internal, открытый, защищенный, внутренний или закрытый.Элементы закрытый по умолчанию.
Для получения дополнительной информации см. Модификаторы доступа (Руководство по программированию в C#).
Можно объявить универсальные классы, имеющие параметры типа.Дополнительные сведения см. в разделе Универсальные классы.
Класс может содержать объявления следующих членов.
Пример
В следующем примере показано объявление полей, конструкторов и методов классов.В нем также демонстрируется создание объекта и печать данных экземпляра.В этом примере объявляются два класса — класс 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) поле "Возраст" по умолчанию было инициализировано с помощью нулевого значения.
Спецификация языка C#
Дополнительные сведения см в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.
См. также
Ссылки
Ссылочные типы (Справочник по C#)
Основные понятия
Руководство по программированию на C#