Контрольная работа: Программирование на Java
3. выполнение блоков инициализации объекта;
4. выполнение тела конструктора класса.
Для других классов порядок аналогичен, но без вызова метода main:
1. инициализация полей данных и выполнение блоков инициализации класса (в порядке записи в декларации класса);
2. выполнение блоков инициализации объекта;
3. выполнение тела конструктора класса.
Чем лучше пользоваться, блоками инициализации или конструкторами? Ответ, конечно, неоднозначен: в одних ситуациях – конструкторами, в других – блоками инициализации. Для придания начальных значений переменным класса в случаях, когда для этого требуются сложные алгоритмы, можно пользоваться только статическими блоками инициализации. Для инициализации полей объектов в общем случае лучше пользоваться конструкторами, но если необходимо выполнить какой-либо код инициализации до вызова унаследованного конструктора, можно воспользоваться блоком динамической инициализации.
Приведем несколько примеров. Программа SmallSquares (маленькие квадраты) возвращает квадрат маленького целого числа. SmallSquares имеет две статические переменные и единственную открытую статическую функцию getSquare().
public class SmallSquares {
private static final int LIMIT = 10;
private static final int[] square = new int[LIMIT];
public SmallSquares() {
for (int i = 0; i < LIMIT; i++) {
square[i] = i * i;
}
}
}
public static int getSquare(int i) {
return square[i];
}
public static void main(String[] args) {
new SmallSquares();
System.out.println("3 squared is " +
getSquare(3));
}
}
Откомпилировав и запустив SmallSquares, получим следующий результат:
3 squared is 9 (3 в квадрате будет 9)
В данном коде объект создается при помощи конструктора так называемым статическим методом.