6. Классы и структуры.

Класс

Класс, по сути, представляет собой шаблон, по которому определяется форма объекта. В нем указываются данные и код, который будет оперировать этими данными. При этом сам класс является абстракцией. Его объектное представление появится в оперативной памяти лишь после того, как будет создан объект этого класса.

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

Класс создается с помощью ключевого слова class.

public class Sas  // объявление класса с модификатором доступа public
{ 
    //Поля класса с разными модификаторами.
    public string myString; 
    private int ID = 228;
    private static string member = "Static member";

    //Конструктор класса - выполняет код, когда создается новый экземпляр класса
    public Sas(string str)
    {
        myString = str;
    }

    //методы класса
    public void doSomething(int integer, string _string)
    {
        //...
        if(doSomethingElse) return;
        //...
    }

    private boolean doSomethingElse()
    {
        bool flag;
        .
        .
        .
        return flag;
    }
}

Каждый новый экземпляр класса создается с помощью оператора new.

<тип класса> имя переменной = new <тип класса>();
Sas class_sas = new Sas("Cтрока передается в конструктор");

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

Структура

Структура подобна классу, однако не относится к ссылочнуму типу данных, не поддерживает наследование. В отличии от классов структуры размещаются не в куче, а в стеке. Однако в отношении синтаксиса они очень похоже. Cуть структуры заключается в производительности и повышении эффективности программ за счет использования стека вместо кучи. Структрура объявляется точно также как и классы, но вместо ключевого слова class используется слово struct.

struct имя : интерфейсы 
{
// объявления членов
}

Как и у классов, у каждой структуры имеются свои члены. В структурах допускается также определять конструкторы. В то же время для структуры нельзя определить конструктор, используемый по умолчанию. Такой конструктор инициализирует поля структуры значениями, задаваемыми по умолчанию. А поскольку структуры не поддерживают наследование, то их члены нельзя указывать как abstract, virtual или protected.

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

struct Data 
{
    public String data1;
    public int data2;
    public char data3;

    public Data(String str, int value)
    {
        data1 = str;
        data2 = value;
    }

    public char getCharFromString(int index)
    {
        .
        .
        .
        return char;
    }
}

results matching ""

    No results matching ""