ВВЕДЕНИЕ

2.5 Данные - члены и управление доступом к элементам классов

· Данные-члены - это набор взаимосвязанной информации, возможно различных типов, объединенной в один объект.

· Данные-члены могут находиться в закрытой (private), защищенной (protected) или открытой (public) части класса.

· Данные-члены могут иметь статический класс памяти (static). Поля, имеющие статический класс памяти, совместно используются всеми объектами класса. К ним возможен доступ через имя класса (с использованием операции разрешения доступа), а не через контекстный объект класса. Статические поля могут быть инициализированы; если нет, то инициализируется значением ноль.

· Данные-члены могут быть объявлены как const. Константные данные должны быть инициализированы в каждом определении конструктора. Имена полей и начальные значения заключаются в скобки, отделяются от списка аргументов конструктора двоеточием.

· Данные-члены могут быть переменными другого класса. В этом случае требуется явная инициализация, если только поля не имеют конструктора по умолчанию.

Способ создания и инициализация

Рассмотрим ряд моментов связанных с созданием и уничтожением.

Первый это стек и куча. Вопрос о выделении памяти через стек или кучу связан с тем как выделяется и освобождается память. Разделяют автоматические и динамические переменные. Для автоматических переменных память создается при входе в процедуру или блок, управляющие этими переменными. При выходе из блока память (автоматически) освобождается. Многие языки используют термин статический (static) для обозначения переменных, автоматически размещаемых в стеке. (В данном случае речь не идет о переменных типа static в С++). Для динамического выделения памяти используется оператор new. Память выделяется по специальному запросу со стороны пользователя.

Автоматические переменные уничтожаются автоматически, динамические по запросу со стороны пользователя ключевым словом delete в С++. В Java нет освобождения памяти, осуществляется процесс сборки мусора – автоматически отслеживается ситуация, когда к объекту нет доступа.

Указатели – это эффективное средство работы с динамической информацией. В языке Java объекты представлены внутренним образом как указатели, но при этом никогда не используются в таком качестве.