1 /*
2 * Vários princípios
3 * 1. Variáveis estáticas dos membros
4 * 1. Variáveis estáticas de membro são variáveis de classe, e todos os objetos compartilham o mesmo espaço de memória
5 * 2. A declaração e definição das variáveis membros estáticas é executada apenas uma vez, quando a classe é carregada pela primeira vez
6 * 3. Ao carregar uma classe pela primeira vez, primeiro atribua valores iniciais a todas as variáveis estáticas de acordo com o tipo, e então anexe valores à direita àqueles com valores r
7 * 2. Bloco inicial estático
8 * 1. Blocos de inicialização estática são executados apenas uma vez, quando a classe é carregada pela primeira vez
9 * ······ Múltiplas variáveis estáticas e a ordem rápida de ocorrência de referência de iniciação estática são executadas sequencialmente······
10 * 3. Variáveis dinâmicas dos membros
11 * 1. A definição de variáveis dinâmicas de membro é executada antes do construtor a cada vez que um objeto é instanciado
12 * 4. Bloco de inicialização dinâmica
13*1. O bloco de inicialização dinâmica é executado antes do construtor toda vez que um objeto é instanciado
14 * ······ Múltiplas variáveis dinâmicas de membros e blocos de inicialização dinâmica são executados na ordem em que aparecem······
15 * Resumo: Em geral, quando uma classe é carregada pela primeira vez, ela é executada na seguinte ordem, sem envolvimento de herança
16 * 1. Executar definição estática de variável membro e bloco de inicialização estática na ordem de ocorrência
17 * 2. Executar definição dinâmica de variável membro e bloco de inicialização dinâmica na ordem de ocorrência
18 * 3. Executar o construtor
19 * Ao instanciar um objeto novamente, apenas os passos 2 e 3 podem ser executados
20 *
21 * ············ Variáveis membro, definições e blocos de inicialização são executados antes do construtor·········
22 * 5. Quando houver herança envolvida, ela deve ser realizada na seguinte ordem
23 * 1. Execute a definição estática da variável membro e o bloco de inicialização estática da classe pai, e execute a definição da variável estática membro e o bloco de inicialização estática da subclasse
24 * 2. Execute o bloco de definição de variável membro não estática e inicialização dinâmica da classe pai, e execute o método de construção da classe pai
25 * 3. Executar a definição de variáveis membros não estáticas de subclasses e inicializar dinamicamente blocos, e executar o método de construção de subclasses
26 * Além disso: Se o método usado no método de construção da classe pai foi reescrito pela subclasse, então o método de reescrita da subclasse é usado ao chamar o construtor da classe pai ao construir o objeto subclasse
|