Prefácio
Hoje, ao assistir à implementação do Android ContentProvider, de repente pensei na ordem de execução de domínios estáticos, blocos estáticos, blocos não estatísticos, blocos não estatísticos e funções construtivas durante o novo processo da classe Java. De fato, essa é uma questão muito clássica, que é muito examinada para compreender o conhecimento básico do Java. Acredito que também existem problemas durante o processo de entrevista e aproveite o tempo para revisá -lo no fim de semana.
para concluir
Aqui está a conclusão de classificação para todos e depois escrevo um programa para verificar nossas conclusões. Durante a classe Java ser nova, a ordem de execução é a seguinte:
No processo de implementação da classe de herança, a ordem de execução de inicialização é a seguinte:
Aqui você precisa introduzir blocos de código estático e blocos de código não estatísticos.
1. Bloco de código estático:
estático {
}
2. Bloco de código não estático
{{
}
As semelhanças e diferenças entre os blocos de código estático e os blocos de código não estatais são os seguintes:
A melhor verificação da verificação da conclusão é escrever o código para provar os resultados. Primeiro, vamos dar uma olhada na ordem de execução quando a classe de herança inicializar.
Classe pública initodertest {public static stration static_field = "Propriedades estáticas"; -Propriedades estatísticas "; // blocos não -estatísticos {System.out.println (campo); System.out.println (" bloco de código não -estático ");} public initoderTest () {System.out.println);} Public static void main (string [] args) {initodrtest test = new initoderTest ();}} Resultados da execução:
Em seguida, vamos verificar se, quando a classe Java for herdada, a ordem de execução está alinhada com nossas conclusões. O código de teste é o seguinte:
Classe ParentTest {public static string parent_static_field = "Propriedades-estáticas"; String Parentfield = "Classe Family-Non Static Atributas"; Paratttest () {System.out.println ("classe Family -Public Classe InitODerTest estende pareatttest {public stration static_field =" static attribute "; // estático static {System.out.println (static_field); system.out.println (" Bloco de código estático ");} public string field =" Propriedades não -estatísticas "; // bloco não -estático {System.out.println (campo); System.out.pr. Intln (" Bloco de código não -estático ") ;} Public initoderTest () {System.out.println ("Portomless construtor");Os resultados da execução são os seguintes: