1 /*
2 * Flera principer
3 * 1. Statiska medlemsvariabler
4 * 1. Statiska medlemsvariabler är klassvariabler, och alla objekt delar samma minnesutrymme
5 * 2. Deklarationen och definitionen av statiska medlemsvariabler utförs endast en gång när klassen laddas in för första gången
6 * 3. När du laddar en klass för första gången, tilldela först initiala värden till alla statiska medlemsvariabler enligt typen, och koppla sedan högra värden till de med r-värden
7 * 2. Statisk initial blockering
8 * 1. Statiska initialiseringsblock körs bara en gång när klassen laddas in för första gången
9 * ······ Flera statiska medlemsvariabler och statisk initieringsordning för snabb referensförekomst körs sekventiellt······
10 * 3. Dynamiska medlemsvariabler
11 * 1. Definitionen av dynamiska medlemsvariabler exekveras före konstruktorn varje gång ett objekt instansieras
12 * 4. Dynamisk initialiseringsblock
13*1. Den dynamiska initialiseringsblocket körs före konstruktorn varje gång ett objekt instansieras
14 * ······ Flera dynamiska medlemsvariabler och dynamiska initialiseringsblock körs i den ordning de förekommer······
15 * Sammanfattning: Generellt, när en klass laddas för första gången, körs den i följande ordning, utan arv inblandad
16 * 1. Kör definition av statisk medlemsvariabel och statisk initialiseringsblock i ordningen för förekomsten
17 * 2. Kör dynamisk medlemsvariabeldefinition och dynamisk initialiseringsblock i ordningen för förekomsten
18 * 3. Utför konstruktören
19 * När ett objekt instansieras igen kan endast steg 2 och 3 utföras
20 *
21 * ············ Medlemsvariabler, definitioner och initialiseringsblock exekveras före konstruktorn·········
22 * 5. När arv är inblandat ska det ske i följande ordning
23 * 1. Exekverar definitionen av statisk medlemsvariabel och statisk initialiseringsblock för föräldraklassen, och kör definitionen av statiska medlemsvariabler och statisk initialiseringsblock för underklassen
24 * 2. Exekverar definitionen av icke-statiska medlemsvariabler och dynamisk initialiseringsblock för föräldraklassen, och kör föräldraklassens konstruktionsmetod
25 * 3. Utför definitionen av icke-statiska medlemsvariabler för delklasser och initiera blocken dynamiskt, och utför metoden för att bygga underklasser
26 * Dessutom: Om metoden som används i föräldraklasskonstruktionsmetoden har skrivits om av underklassen, används underklassomskrivningsmetoden när man anropar föräldraklasskonstruktören vid konstruktion av underklassobjektet
|