Предисловие
Сегодня, наблюдая за реализацией Android ContentProvider, я внезапно подумал о порядке выполнения статических доменов, статических блоков, нестатических блоков, нестатических блоков и конструктивных функций во время нового процесса класса Java. На самом деле, это очень классическая проблема, которая очень изучена, чтобы понять основные знания Java. Я считаю, что в процессе собеседования также есть такие проблемы и воспользоваться временем, чтобы просмотреть его на выходных.
в заключение
Вот сортировочный вывод для всех, а затем я пишу программу для проверки наших выводов. Во время класса Java новый, порядок выполнения следующим образом:
В процессе реализации класса наследования порядок выполнения инициализации выглядит следующим образом:
Здесь вам нужно ввести статические кодовые блоки и не -статические кодовые блоки.
1. Статический кодовый блок:
статический {
}
2. Не -статический кодовый блок
{{
}
Сходства и различия между статическими блоками кода и неэтиатическими блоками кода являются следующими:
Лучшая проверка проверки заключения - написать код, чтобы доказать результаты. Во -первых, давайте посмотрим на порядок исполнения, когда класс наследования инициализируется.
Открытый класс initOderTest {public Static Stration static_field = "Статические свойства"; -Static свойства "; // не -статические блоки {System.out.println (field); System.out.println (" не -статический кодовый блок ");} public initoDertest () {System.out.println);} Public static void main (string [] args) {initodrtest test = new initoDertest ();}} Результаты исполнения:
Далее, давайте убедимся, что когда класс Java унаследован, приказ о выполнении соответствует нашим выводам. Тестовый код заключается в следующем:
Class ParentStest {Public Static String_static_field = "Parent-Static Properties"; String Parentfield = "Семейный класс-нон-статический"; Pareatttest () {system.out.println ("семейство -Публичное класс initodertest extends pareatttest {public Stration static_field =" Статический атрибут "; // static block static {System.out .println (static_field); System.out.println (" System.out .println (static_field); Статический кодовый блок ");} public String Field =" Не -статические свойства "; // не -статический блок {System.out.println (Field); System.out.pr. Intln (" Не -статический кодовый блок ") ;} Public initoDertest () {System.out.println ("Без портома конструктора");Результаты выполнения следующие: