Блоки инициализации. Порядок выполнения в enum
Для enum-классов сначала вызываются попарно динамический блок инициализации и конструктор, и только потом статические блоки инициализации.Определение enum-класса начинается с его констант, которые инициализируются в статическом блоке инициализации, вызывая свой приватный конструктор.
Поскольку статические блоки инициализации выполняются в порядке их появления в коде, то любой статический блок, добавленный в описание enum-класса, выполнится после того, как будут созданы константы класса. ... Читать дальше »
Приоритет операции означает не то, какая операция первой выполнится, а то, кто первый захватит себе данные.
Порядок вызова конструктора и блоков инициализации у потомка и предка:
Блок инициализации всегда выполняется перед конструктором.
Блоки инициализации бывают статическими и нестатическими (динамическими).
Блоки инициализации выполняются до вызова конструктора. Если для инициализации переменной нужно выполнить какие-либо вычисления, удобнее вынести это в блок инициализации, чтобы не загромождать конструктор.
Лямбда-выражения работают только с функциональными интерфейсами - интерфейсами, содержащими только один абстрактный метод.
Конструктор всегда создаёт и возвращает объект класса, в котором он определён. Поэтому в своём описании он не содержит идентификатор возвращаемого типа.
Если метод возвращает результат, то тип результата должен быть совместим с типом, указанным в объявлении метода.
Перегруженные методы могут возвращать разные типы и могут иметь разные модификаторы доступа.