В этом испытании используются концепции Конструктор, Статический блок, Экземплярный блок, Вложенный класс, Абстрактный класс .

Пожалуйста, решите это, не запуская его в какой-либо среде IDE. Вы можете опубликовать свой ответ в поле для комментариев. Мы можем обсудить решение 29 сентября 2019 года.

Кредиты: Рафаэль Дель Неро (https://twitter.com/RafaDelNero)

Выпуск 1 - Ответ.

Итак, прежде чем решать проблему, давайте разберемся со всеми концепциями.

Согласно документации Oracle Java:

Конструктор - класс содержит конструкторы, которые вызываются для создания объектов из схемы класса. Объявления конструктора выглядят как объявления методов, за исключением того, что они используют имя класса и не имеют возвращаемого типа.

Статический блок - блок статической инициализации - это обычный блок кода, заключенный в фигурные скобки { }, которому предшествует ключевое слово static. Класс может иметь любое количество статических блоков инициализации, и они могут появляться в любом месте тела класса. Система времени выполнения гарантирует, что блоки статической инициализации вызываются в том порядке, в котором они появляются в исходном коде.

Есть альтернатива статическим блокам - вы можете написать приватный статический метод. Преимущество частных статических методов заключается в том, что их можно повторно использовать позже, если вам нужно повторно инициализировать переменную класса.

Блок экземпляра - обычно вы помещаете код для инициализации переменной экземпляра в конструктор. Есть две альтернативы использованию конструктора для инициализации переменных экземпляра: блоки инициализатора и методы final. Компилятор Java копирует блоки инициализатора в каждый конструктор. Таким образом, этот подход можно использовать для совместного использования блока кода между несколькими конструкторами.

final метод нельзя переопределить в подклассе. Это обсуждается в уроке по интерфейсам и наследованию. Это особенно полезно, если подклассы могут захотеть повторно использовать метод инициализации. Этот метод является окончательным, потому что вызов неокончательных методов во время инициализации экземпляра может вызвать проблемы.

Вложенный класс - T язык программирования Java позволяет нам определять класс внутри другого класса. Вложенные классы делятся на две категории: статические и нестатические. Вложенные классы, объявленные static, называются статическими вложенными классами. Нестатические вложенные классы называются внутренними классами.

Как и в случае с методами и переменными класса, статический вложенный класс связан со своим внешним классом. И, как и методы статического класса, статический вложенный класс не может напрямую ссылаться на переменные экземпляра или методы, определенные в его включающем классе: он может использовать их только через ссылку на объект.

Статический вложенный класс взаимодействует с членами экземпляра своего внешнего класса (и других классов) так же, как и любой другой класс верхнего уровня. Фактически, статический вложенный класс поведенчески является классом верхнего уровня, который был вложен в другой класс верхнего уровня для удобства упаковки.

Абстрактный класс - абстрактный класс - это класс, который объявлен как абстрактный - он может включать или не включать абстрактные методы. Абстрактные классы не могут быть созданы, но могут быть разделены на подклассы.

Надеюсь, теперь вы знаете все концепции. Вы можете связаться со мной в любое время на следующей платформе -
LinkedIn - https://www.linkedin.com/in/govindaraj511/
Электронная почта - [email protected]
Twitter - https://twitter.com/511govindaraj
Github - https://github.com/govinda-raj
Stack-Overflow - https://stackoverflow.com/users/8120682/ говинда-радж

Обратите внимание - все концепции определены в документации Oracle Java.

Итак, вот окончательный ответ -

// В первую очередь будет выполнен статический блок основного класса. Хитрость заключается в том, что блок экземпляра основного класса не будет выполняться, потому что JVM не создает экземпляр основного класса (где находится основной метод)
1. Статический блок - основной

// Первый статический блок родительского класса, затем будет загружен дочерний блок.
2. Статический блок - родительский

3. Статический блок - Ребенок

// Экземпляр родительского элемента будет вызван из-за супер-вызова.
4. Нестатический (экземпляр) Блок1 - Родительский
5. Нестатический (Экземплярный) Блок2 - Родительский
6. Родительский < br /> 7. Нестатический (экземплярный) блок - ребенок
8. Имя: Говинда, возраст: 25
9. Ребенок

// Будет напечатано финальное сообщение основного класса.
Имя: Manvi, Возраст: 24