Java: члены класса, статические переменые и методы
Конструкторы
Конструктором называется метод, вызываемый для инициализации объекта при его создании.
Имя конструктора всегда совпадает с именем класса. Конструктор не может использовать оператор return и для него не указывается никакого типа возвращаемого значения. При объявлении конструктора можно указать модификаторы доступа public, protected или private.
Наличие явно описанного конструктора в классе не является обязательным. В этом случае при создании объекта используется конструктор по умолчанию. Такой конструктор не получает параметров и вызывает непосредственно конструктор суперкласса: super().
При этом, если суперкласс не имеет конструктора без списка параметров, то происходит ошибка компиляции.
Конструкторы не наследуются подклассами.
Тело конструктора заключается в фигурные скобки.
При этом первыми операторами должны быть указаны, если они используются, операторы вызова конструкторов данного класса или суперкласса.
Конструктор может иметь следующее формальное описание:
ИмяКласса (СписокПараметров) { ВызовКонструкторов БлокОператоров }
Вызов конструкторов выполняется операторами this и super с указанием в скобках списка параметров.
Например:
public class C extends A { public C() {this(1,20); } // Вызов конструктора данного класса public C(int i, int j) { } }
Вызов конструкторов подчиняется следующим правилам:
- при создании объекта любого заданного класса будет неявно выполнена цепочка вызовов всех конструкторов его суперклассов;
- первым будет выполнено тело конструктора для Object ;
- каждый последующий конструктор в цепочке будет выполняться только после выполнения конструктора своего непосредственного суперкласса;
- при создании объекта будут инициализированы все переменные экземпляра.
Создание объекта
При создании объекта последовательно выполняются следующие действия: вызывается конструктор, создается новый объект указанного типа, и все переменные экземпляра инициализируются своими значениями по умолчанию, затем формируется ссылка на созданный и инициализированный объект. Эта ссылка и является значением выражения, создающего объект.
Объект может быть создан вызовом метода newInstance. В этом случае используется конструктор без списка параметров.
Статические переменные
Для каждого класса создается только один экземпляр статической переменной (переменой класса).
При описании статических переменных должны быть выполнены следующие правила:
- статические переменные должны быть объявлены вне всякого метода;
- статические переменные могут быть инициализированы при их объявлении или блоком кода, отмеченного ключевым словом static, и также расположенным вне метода.
Инициализация статических переменных выполняется при загрузке класса. Инициализация переменных выполняется в порядке их следования в объявлении класса.
Например:
public class C { public C() { } static int b=3; static int c; static { b++; c = 10; } // Инициализация статической переменной }
При инициализации статических переменных можно вызывать статические методы.