Yurijnd.com
Четверг, 06.02.2025, 20:50
Меню сайта

Вход на сайт

Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Классы (Руководство по программированию на C#)

    Visual Studio 2013
     

    Класс — это логическая структура, позволяющая создавать свои собственные пользовательские типы путем группирования переменных других типов, методов и событий. Класс подобен чертежу. Он определяет данные и поведение типа. Если класс не объявлен статическим, то клиентский код может его использовать, создав объекты или экземпляры, назначенные переменной.Переменная остается в памяти, пока все ссылки на нее не выйдут из области видимости. В это время среда CLR помечает ее пригодной для сборщика мусора. Если класс объявляется статическим, то в памяти остается только одна копия и клиентский код может получить к ней доступ только посредством самого класса, а не переменной экземпляра. Для получения дополнительной информации см. Статические классы и члены статических классов (Руководство по программированию в C#).

    В отличие от структур классы поддерживают наследование, фундаментальную характеристику объектно-ориентированного программирования. Для получения дополнительной информации см. Наследование (Руководство по программированию на C#).

    Объявление классов

     

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

     
    public class Customer
    {
     //Fields, properties, methods and events go here...
    }
    

    Ключевому слову class предшествует уровень доступа. Поскольку в данном случае используется public, любой может создавать объекты из этого класса. Имя класса указывается после ключевого слова class. Оставшаяся часть определения является телом класса, в котором задаются данные и поведение. Поля, свойства, методы и события в классе обозначаются термином члены класса.

    Создание объектов

     

    Класс и объект — это разные вещи, хотя в некоторых случаях они взаимозаменяемы. Класс определяет тип объекта, но не сам объект. Объект — это конкретная сущность, основанная на классе и иногда называемая экземпляром класса.

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

     
    Customer object1 = new Customer();
    

    При создании экземпляра класса ссылка на этот объект передается программисту. В предыдущем примере object1 является ссылкой на объект, основанный на Customer. Эта ссылка указывает на новый объект, но не содержит данные этого объекта.Фактически, можно создать ссылку на объект без создания самого объекта:

     
    Customer object2;
    

    Создание таких ссылок, которые не указывают на объект, не рекомендуется, так как попытка доступа к объекту по такой ссылке приведет к сбою во время выполнения. Однако такую ссылку можно сделать указывающей на объект, создав новый объект или назначив ее существующему объекту:

     
    Customer object3 = new Customer();
    Customer object4 = object3;
    

    В данном коде создаются две ссылки на объекты, которые указывают на один объект. Поэтому любые изменения объекта, выполненные посредством object3, будут видны при последующем использовании object4. Поскольку на объекты, основанные на классах, указывают ссылки, классы называют ссылочными типами.

    Наследование классов

     

    Наследование выполняется с помощью образования производных, то есть класс объявляется с помощью базового класса, от которого он наследует данные и поведение. Базовый класс задается добавлением после имени производного класса двоеточия и имени базового класса:

     
    public class Manager : Employee
    {
     // Employee fields, properties, methods and events are inherited 
     // New Manager fields, properties, methods and events go here...
    }
    

    Когда класс объявляет базовый класс, он наследует все члены базового класса, за исключением конструкторов.

    В отличие от C++, класс в C# может только напрямую наследовать от одного базового класса. Однако, поскольку базовый класс может сам наследовать от другого класса, класс может косвенно наследовать несколько базовых классов. Кроме того, класс может напрямую реализовать несколько интерфейсов. Для получения дополнительной информации см. Интерфейсы (Руководство по программированию в C#).

    Класс может быть объявлен абстрактным. Абстрактный класс содержит абстрактные методы, которые имеют определение сигнатуры, но не имеют реализации. Нельзя создавать экземпляры абстрактных классов. Они могут использоваться только посредством производных классов, реализующих абстрактные методы. И наоборот, запечатанный класс не позволяет другим классам быть от него производными. Для получения дополнительной информации см. Абстрактные и запечатанные классы и члены классов (Руководство по программированию на C#).

    Определения классов можно разделить между различными исходными файлами. Для получения дополнительной информации см. Разделяемые классы и методы (Руководство по программированию в C#).

    Описание

     

    В следующем примере определяется открытый класс, содержащий одно поле, метод и специальный метод, вызывающий конструктор. Для получения дополнительной информации см. Конструкторы (Руководство по программированию на C#). После этого с помощью ключевого слова new создается экземпляр класса.

    Пример

     
     
    public class Person
    {
     // Field 
     public string name;
    
     // Constructor that takes no arguments. 
     public Person()
     {
     name = "unknown";
     }
    
     // Constructor that takes one argument. 
     public Person(string nm)
     {
     name = nm;
     }
    
     // Method 
     public void SetName(string newName)
     {
     name = newName;
     }
    }
    class TestPerson
    {
     static void Main()
     {
     // Call the constructor that has no parameters.
     Person person1 = new Person();
     Console.WriteLine(person1.name);
    
     person1.SetName("John Smith");
     Console.WriteLine(person1.name);
    
     // Call the constructor that has one parameter.
     Person person2 = new Person("Sarah Jones");
     Console.WriteLine(person2.name);
    
     // Keep the console window open in debug mode.
     Console.WriteLine("Press any key to exit.");
     Console.ReadKey();
     }
    }
    // Output: 
    // unknown 
    // John Smith 
    // Sarah Jones
    Copyright MyCorp © 2025
    Сделать бесплатный сайт с uCoz