Московский государственный университет имени М.В.Ломоносова
Опубликован: 03.10.2006 | Доступ: свободный | Студентов: 1224 / 79 | Длительность: 09:08:00
Специальности: Программист
Лекция 14:

Java: члены класса, статические переменые и методы

< Лекция 13 || Лекция 14: 1234

Конструкторы

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

Имя конструктора всегда совпадает с именем класса. Конструктор не может использовать оператор 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; }  
     // Инициализация статической переменной
}

При инициализации статических переменных можно вызывать статические методы.

< Лекция 13 || Лекция 14: 1234