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;
}
}