Avant-propos
Aujourd'hui, en regardant la mise en œuvre d'Android ContentProvider, j'ai soudainement pensé à l'ordre d'exécution des domaines statiques, des blocs statiques, des blocs non statiques, des blocs non statiques et des fonctions constructives pendant le nouveau processus de la classe Java. En fait, il s'agit d'une question très classique, qui est très examinée pour saisir les connaissances de base de Java. Je crois qu'il y a aussi de tels problèmes pendant le processus d'entrevue et profite du temps pour le revoir le week-end.
en conclusion
Voici la conclusion de tri à tous, puis j'écris un programme pour vérifier nos conclusions. Pendant la classe Java étant nouvelle, l'ordre d'exécution est le suivant:
Dans le processus de mise en œuvre de la classe d'héritage, l'ordre d'exécution d'initialisation est le suivant:
Ici, vous devez introduire des blocs de code statiques et des blocs de code non statiques.
1. Bloc de code statique:
statique {
}
2. Bloc de code non statique
{{
}
Les similitudes et les différences entre les blocs de code statique et les blocs de code non statiques sont les suivants:
La meilleure vérification de la vérification de la conclusion est d'écrire le code pour prouver les résultats. Tout d'abord, jetons un coup d'œil à l'ordre d'exécution lorsque la classe d'héritage initialise.
Classe publique initoDERTest {public statique statique static_field = "Propriétés statiques"; -Statique Propriétés "; // Blocs non-statiques {System.out.println (Field); System.out.println (" Bloc de code non statique ");} public InitoDerTest () {System.out.println);} Public static void main (String [] args) {initoDrTest test = new InitoDerTest ();}} Résultats de l'exécution:
Ensuite, vérifions que lorsque la classe Java est héritée, l'ordre d'exécution est conforme à nos conclusions. Le code de test est le suivant:
Class ParentTest {Public Static String Parent_Static_field = "Propriétés Parent-static"; String Parentfield = "Family Class-Non-Static Attributs"; PareAtTest () {System.out.println ("Family -Public Class InitoDerTest étend PareAtTest {public Stration static_field =" Attribut static "; // Block statique statique {System.out .println (static_field); System.out.println (" Bloc de code statique ");} public String Field =" Propriétés non -statiques "; // Block non -statique {System.out.println (champ); System.out.pr. Intln (" Bloc de code non statique ") ;} Public InitoDerTest () {System.out.println ("Constructeur sans portométique");Les résultats de l'exécution sont les suivants: