Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ

10 Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ Static Π² Java

БтатичСскиС поля

БтатичСский Π±Π»ΠΎΠΊ

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄

БтатичСский класс Π² Java

Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ программист ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ Static Π² Java

Π’Ρ‹ НЕ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ НЕ статичСским Ρ‡Π»Π΅Π½Π°ΠΌ класса, Π²Π½ΡƒΡ‚Ρ€ΠΈ статичСского контСкста, ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ компиляции ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ошибка:

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, статичСскиС поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ НЕ потокобСзопасны (Thread-safe) Π² Java. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ частых ΠΏΡ€ΠΈΡ‡ΠΈΠ½ возникновСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ связанных с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ программирования. Учитывая Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр класса ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ копию статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ такая пСрСмСнная нуТдаСтся Π² Π·Π°Ρ‰ΠΈΡ‚Π΅ β€” Β«Π·Π°Π»ΠΎΡ‡ΠΈΠ²Π°Π½ΠΈΠΈΒ» классом. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ использовании статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ синхронизированы (synchronized), Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ «состояниС Π³ΠΎΠ½ΠΊΠΈΒ» (race condition).

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ прСимущСство Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, Ρ‚.ΠΊ. отсутствуСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для доступа ΠΊ Ρ‚Π°ΠΊΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΈΠΏ класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ описаны. ИмСнно поэтому, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠ°ΠΊ нСльзя Π»ΡƒΡ‡ΡˆΠ΅ подходят Π² качСствС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²-Ρ„Π°Π±Ρ€ΠΈΠΊ ( factory ), ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ( utility ). Класс java.lang.Math β€” Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΡ‡Ρ‚ΠΈ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ статичны, ΠΏΠΎ этой ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ классы-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Π² Java Ρ„ΠΈΠ½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ( final ).

Π”Ρ€ΡƒΠ³ΠΈΠΌ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ НЕ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ( Override ) статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Если Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² классС-наслСдникС ( subclass ), Ρ‚.Π΅. ΠΌΠ΅Ρ‚ΠΎΠ΄ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ сигнатурой, Π²Ρ‹ лишь «спрячСтС» ΠΌΠ΅Ρ‚ΠΎΠ΄ супСркласса ( superclass ) вмСсто пСрСопрСдСлСния. Π­Ρ‚ΠΎ явлСниС извСстно ΠΊΠ°ΠΊ сокрытиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ( hiding methods ). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ статичСскому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ объявлСн ΠΊΠ°ΠΊ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС, Π²ΠΎ врСмя компиляции всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ исходя ΠΈΠ· Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ пСрСопрСдСлСния, Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса/статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ static Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объявлСн Π² статичном Π±Π»ΠΎΠΊΠ΅, Π±ΠΎΠ»Π΅Π΅ извСстным ΠΊΠ°ΠΊ «БтатичСский Π±Π»ΠΎΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΒ» ( Static initializer block ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ класса. Если Π²Ρ‹ Π½Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ Π±Π»ΠΎΠΊ, Ρ‚ΠΎ Java собСрёт всС статичСскиС поля Π² ΠΎΠ΄ΠΈΠ½ список ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π΅Π³ΠΎ Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ класса. Однако, статичный Π±Π»ΠΎΠΊ НЕ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π½Π΅ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Π΅. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Β«Exception Initializer ErrorΒ». На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, любоС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ возникшСС Π²ΠΎ врСмя выполнСния ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ статичСских ΠΏΠΎΠ»Π΅ΠΉ, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Ρ‘Ρ€Π½ΡƒΡ‚ΠΎ Java Π² эту ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ самая частая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ошибки Β«No Class Def Found ErrorΒ», Ρ‚.ΠΊ. класс Π½Π΅ находился Π² памяти Π²ΠΎ врСмя обращСния ΠΊ Π½Π΅ΠΌΡƒ.

ПолСзно Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²ΠΎ врСмя компиляции, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ связывания Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π΅ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²ΠΎ врСмя исполнСния Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Java, Ρ‚.ΠΊ. ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²ΠΎ врСмя выполнСния Π½Π΅ распространяСтся Π½Π° Π½ΠΈΡ…. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, объявляя ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским. Π’ этом Π΅ΡΡ‚ΡŒ смысл, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ возмоТности ΠΈΠ»ΠΈ нСобходимости пСрСопрСдСлСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° классами-наслСдниками. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹-Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ примСнСния ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° static. Π”ΠΆΠΎΡˆΡƒΠ° Π‘Π»ΠΎΡ… Π²Ρ‹Π΄Π΅Π»ΠΈΠ» нСсколько прСимущСств использования статичного ΠΌΠ΅Ρ‚ΠΎΠ΄Π°-Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄ конструктором, Π² ΠΊΠ½ΠΈΠ³Π΅ Β«Effective JavaΒ», которая являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ для прочтСния ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ программистом Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка.

На этом всё. ВсС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ static Π² Java обязан Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ программист. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±Ρ‹Π»Π° рассмотрСна базовая информация ΠΎ статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, полях, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, Π±Π»ΠΎΠΊΠ°Ρ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅. Π’ Ρ‚ΠΎΠΌ числС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ свойства, Π·Π½Π°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ написании ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Java. Π― надСюсь, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ²Π΅Π΄Ρ‘Ρ‚ свои Π½Π°Π²Ρ‹ΠΊΠΈ использования статичСских ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΠ² Π΄ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Π°, Ρ‚.ΠΊ. это ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ для ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠ³ΠΎ программирования.»

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static Π² Java

НапримСр, Ρƒ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚, ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» изготовлСния, Ρ„ΠΎΡ€ΠΌΠ°, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΡ… ΡƒΠ·Π»ΠΎΠ²(Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠ²) ΠΈ Ρ‚.Π΄

ВсС это являСтся свойствами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΎΠ½ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ±ΠΎΡ€Π° ΠΎΠ½ΠΈ свои.

Работая с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ эти свойства, измСняСм ΠΈΡ… ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΡ€ΠΈ этом, всС эти измСнСния Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‚ массив, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ сСйчас ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Однако ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π±Π΅Π· создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π»ΠΈΠ±ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ это свойство ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Ρ‹Π»ΠΎ ΠΎΠ±Ρ‰ΠΈΠΌ для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, рассмотрим ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Π² консоль число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаСтся Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π² этот ΠΌΠ΅Ρ‚ΠΎΠ΄:

Π’.Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ связан с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса, ΠΎΠ½ связан Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с классом, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ объявлСн.

А Ρ€Π°Π· ΠΎΠ½ Π½Π΅ связан с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Ρ‚ΠΎ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, для использования этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π½Π΅ Π½ΡƒΠΆΠ΅Π½. НуТСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ класс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ объявлСн этот ΠΌΠ΅Ρ‚ΠΎΠ΄.

Π£ΠΊΠ°Π·Π°Π² ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ static Ρƒ поля ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса, Π²Ρ‹ Ρ‚Π΅ΠΌ самым Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅: это ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ классу.

Если ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ классу, Ρ‚ΠΎ для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса это ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΡƒΠΆΠ΅ Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. ΠŸΡ€ΠΈ этом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этого поля Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Π»Π΅Ρ‡Π΅Ρ‚ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρƒ всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π“Ρ€ΡƒΠ±ΠΎ говоря, Ссли Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΠΏΠΎΠ»Π΅ класса статичСским, Ρ‚ΠΎ Π²Ρ‹ ΠΊΠ°ΠΊ Π±Ρ‹ Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΠ²Π°Π΅Ρ‚Π΅ это ΠΏΠΎΠ»Π΅ для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ нСсколько ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Если ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΉ измСняСт ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ слово ΠΈΠ»ΠΈ Π°Π±Π·Π°Ρ†, Ρ‚ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ мСняСтся Ρƒ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π­Ρ‚ΠΎ довольно Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ, поэтому доступа Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ count Π½Π΅Ρ‚.

Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, static ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΏΠ»ΠΎΡ…ΠΎ лоТится Π½Π° ООП ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ ΠΈ Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π½Π°Π΄ΠΎ ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ свСсти использованиС static ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ измСняСмых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ.

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ static

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано ΠΏΡ€ΠΈ объявлСнии:

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ классу, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, для ΠΈΡ… использования Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса.

Π§Π°Ρ‰Π΅ всСго ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли вСсь контСкст для Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ пСрСдаСтся Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΈΠ· числа, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ самого числа. Π’ΠΎ ΠΆΠ΅ самоС ΠΈ с Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ.

Если ΠΆΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΅ΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² нСдостаточно, Ρ‚ΠΎ это Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ стоит ΠΊΡ€Π΅ΠΏΠΊΠΎ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ: «Π Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ ΠΎΠ½ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π±Ρ‹Ρ‚ΡŒ статичСским?».

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ использовании factory ΠΈ builder ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ².

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом Π² ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляров ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ ΠΈ для создания экзСмпляров ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π² зависимости ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ условий, для добавлСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ Π² созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Ρ‚.Π΄

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² добавляСтся Π΅Ρ‰Π΅ какая-Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈΠ»ΠΈ оптимизация.

НаиболСС часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ значСния Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ΅ΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство созданных экзмСпляров класса:

Но Π² основном статичСскиС поля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания констант:

ΠŸΡ€ΠΎ константы ΠΈ ΠΈΡ… ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚.

БтатичСскиС Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ статичСского Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π° выполняСтся Π½Π° этапС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ класса, Π³Ρ€ΡƒΠ±ΠΎ говоря, Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊ Π½Π΅ΠΌΡƒ обращСния. Благодаря этому статичСскиС Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΠΊΡƒ Π΅Ρ‰Π΅ Π΄ΠΎ создания экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π‘ нСбольшой ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это конструктор для всСго класса.

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, статичСский Π±Π»ΠΎΠΊ выполняСтся Π½Π° этапС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ класса ΠΈ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

Выглядит синтаксис статичСского Π±Π»ΠΎΠΊΠ° Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

БтатичСских Π±Π»ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько, ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² порядкС объявлСния.

БтатичСскиС Π±Π»ΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ статичСских ΠΏΠΎΠ»Π΅ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’.Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ для заполнСния.

Для этого ΠΌΡ‹ ΠΈ использовали статичСский Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΈ ΠΎΠ½ выполнился Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса, Ρ‚Π΅ΠΌ самым ΠΌΡ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ наш ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ Π΄Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’Π°ΠΊ Π²ΠΎΡ‚, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΊΠ°ΠΊ Ρ€Π°Π· Π΄Π΅Π»Π°ΡŽΡ‚ Π² статичСском Π±Π»ΠΎΠΊΠ΅:

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ порядкС выполнСния ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса: ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ класса Π² Java.

БтатичСскиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы

Π’ Java ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ класс Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса.

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ:

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ nested класссы ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ outer классу, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ inner классы ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΡƒΠΆΠ΅ экзСмпляру ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса.

Π—Π°Ρ‡Π΅ΠΌ ΠΆΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ½Ρ‹ nested классы?

НапримСр, Π²Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ связного списка.

Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎ исходя ΠΈΠ· этого Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ public класс излишнС.

Объявив ΠΆΠ΅ Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс, Π²Ρ‹ Π΄ΠΎΠ±ΡŒΠ΅Ρ‚Π΅ΡΡŒ сразу Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… прСимущСств:

ЛогичСски сгруппируСтС классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС

Если класс ΠΏΠΎΠ»Π΅Π·Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ стороннСго класса, Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ввСсти Π΅Π³ΠΎ Π² этот класс ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ вмСстС.

Π­Ρ‚ΠΎ способ привСсти ΠΊΠΎΠ΄ ΠΊ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ.

ДостигаСтся это Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс Π±Π»ΠΈΠΆΠ΅ ΠΊ мСсту использования ΠΈ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ использования Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… классах.

Π­Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ.

Если Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ стороннСго класса, Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ лишь Π²Π½ΡƒΡ‚Ρ€ΠΈ. Аналогично с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ объявляСм private поля.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классах: Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы Π² Java.

Как стоит ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ статичСским полям ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ

Если ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ, Ρ‚ΠΎ Ρ€Π°Π· ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ классу, Ρ‚ΠΎ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Π΅Ρ€Π΅Π· имя класса.

Если Π½ΡƒΠΆΠ½Ρ‹ подробности, Ρ‚ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ класс, содСрТащий статичСскоС ΠΏΠΎΠ»Π΅:

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ этому полю, ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?

Π•ΡΡ‚ΡŒ Π΄Π²Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°:

Π’Π°ΠΊ Π²ΠΎΡ‚, сразу скаТу: Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Π”Π°, ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ, Π½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ Π½Π΅ стоит. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, это Π³Π»ΡƒΠΏΠΎ!

ВспомнитС, Ρ‡Ρ‚ΠΎ статичСскиС поля ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Π½Π΅ экзСмпляру ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса, Π° самому классу. Π’Π°ΠΊ Π·Π°Ρ‡Π΅ΠΌ Π²Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚?

Для закрСплСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ класс, описанный Π²Ρ‹ΡˆΠ΅, ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠΌ Π½Π° вопрос: Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π’Π΅Π΄ΡŒ ΠΌΡ‹ обращаСмся ΠΊ полю, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ классу! А Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ экзСмпляра, ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполнится Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ:

Π’.Π΅ Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ полю ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся статичСским, Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ экзСмпляров, компилятор всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ вас ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ.

Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ полям осущСствляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· имя класса.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ интСрСсный ΠΌΠΎΠΌΠ΅Π½Ρ‚ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ нСльзя ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ.

Π’.Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с статичСскими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ override Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½.

Если Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² классС-наслСдникС ΠΈ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ классС, Ρ‚.Π΅. ΠΌΠ΅Ρ‚ΠΎΠ΄ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ сигнатурой, Π²Ρ‹ лишь спрячСтС ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, Π½ΠΎ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅.

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ статичСскому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ объявлСн ΠΊΠ°ΠΊ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ Π² классС-наслСдникС, Π²ΠΎ врСмя компиляции всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ исходя ΠΈΠ· Ρ‚ΠΈΠΏΠ° ссылки, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ полю ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈ наслСдовании Π½Π΅ стоит.

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π²Ρ‹ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΅Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ прСкрасно компилируСтся.

Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ Π½Π°Π΄ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ static ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² Java

ПослС дСсСриализации Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано ΠΏΡ€ΠΈ объявлСнии:

Π§Π°Ρ‰Π΅ всСго ΠΎΠ½ΠΎ примСняСтся для ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… случаСв.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ВсС ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… словах static ΠΈ final

Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static?

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ класса Π² Java, Π½ΡƒΠΆΠ½ΠΎ сначала ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ‡Π»Π΅Π½ΠΎΠ² класса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ экзСмпляра. Но ΠΈΠ½ΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ класса, Π½Π΅ создавая Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π“Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static?

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… контСкстах:

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· пСрСчислСнных ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ².

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ класса, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ классу, Π° Π½Π΅ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· имя класса.

БтатичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

ΠŸΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Π² Java ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… содСрТит ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ копию всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… класса.

Однако, Ссли ΠΌΡ‹ объявим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ статичСской, всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΈ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ связаны с классом. И ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса для доступа ΠΊ статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. НапримСр:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ normalVariable β€” пСрСмСнная класса, Π° staticVariable β€” статичСская пСрСмСнная. Если Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° доступ ΠΊ статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· имя класса:

Π—Π΄Π΅ΡΡŒ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ уровня класса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ это отраТаСтся Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ уровня класса. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ всСгда ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Но пСрСмСнная экзСмпляра сохраняСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ экзСмплярС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚:

БтатичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ β€” Ρ€Π΅Π΄ΠΊΠΎΡΡ‚ΡŒ Π² Java. ВмСсто Π½ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ статичСскиС константы. Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом static final ΠΈ прСдставлСны Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр ΠΈ для статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

БтатичСскиС Π±Π»ΠΎΠΊΠΈ

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ статичСский Π±Π»ΠΎΠΊ с синтаксисом:

БтатичСскиС Π±Π»ΠΎΠΊΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. БтатичСский Π±Π»ΠΎΠΊ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° класс загруТаСтся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π­Ρ‚ΠΎ происходит, Ссли Π² ΠΊΠΎΠ΄Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса, Π»ΠΈΠ±ΠΎ статичСскиС Ρ‡Π»Π΅Π½Ρ‹ этого класса.

Класс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько статичСских Π±Π»ΠΎΠΊΠΎΠ², Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… выполняСтся Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ написаны Π² ΠΊΠΎΠ΄Π΅.

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ пСрСмСнная staticVariable ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ статичСского Π±Π»ΠΎΠΊΠ°.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ статичСский класс

Π’ Java ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ класс Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса. Π’Π°ΠΊΠΈΠ΅ классы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ классами. Они Π±Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²ΡƒΡ… Ρ‚ΠΈΠΏΠΎΠ²: статичСскиС ΠΈ нСстатичСскиС.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс являСтся Ρ‡Π»Π΅Π½ΠΎΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π΅Π³ΠΎ класса. НСстатичСскиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы) ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ класса, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ. БтатичСскиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ доступа ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ класса.

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ содСрТит Π½Π΅ΡΠ²Π½ΡƒΡŽ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ внСшнСго класса. Если Π²Ρ‹ создадитС экзСмпляр этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· ΠΊΠΎΠ΄Π° внСшнСго класса, всС Π±ΡƒΠ΄Π΅Ρ‚ сдСлано Π·Π° вас. Если Π²Ρ‹ поступитС ΠΈΠ½Π°Ρ‡Π΅, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Π‘ΠΎ статичСским Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ классом всС ΠΈΠ½Π°Ρ‡Π΅. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Ρƒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ класса Π½Π΅Ρ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для доступа ΠΊ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ статичСским ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс MyInnerClass ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ внСшнСго, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. БтатичСскому Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ классу, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², нСдоступны ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ внСшнСго класса.

Π“Π΄Π΅ Π² памяти Java хранятся статичСскиС классы ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅?

Π’ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ 8-ΠΉ вСрсии Java статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Π² пространствС permgen. Но ΠΏΠΎΡ‚ΠΎΠΌ Π±Ρ‹Π»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ пространство памяти, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ мСтапространством β€” Π² Π½Π΅ΠΌ хранятся всС эти ΠΈΠΌΠ΅Π½Π° ΠΈ поля класса, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса с Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΏΡƒΠ» констант, JIT-ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚. Π΄. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° удалСния permgen Π² Java 8.0 Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ слоТно ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ permgen.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово final?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ конСчная пСрСмСнная ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅ΠΉ стоит Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ?

БущСствуСт Ρ‚Ρ€ΠΈ способа ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Когда слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ

ЕдинствСнноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” нСльзя. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ постоянными Π½Π° протяТСнии выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ классы

ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ класс компилятор выдаст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π—Π΄Π΅ΡΡŒ происходит ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ final ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. Java этого Π½Π΅ позволяСт ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π² java статичСскиС Π±Π»ΠΎΠΊΠΈ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Руководство ΠΏΠΎ статичСскому ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову Π² Java

Π£Π·Π½Π°ΠΉΡ‚Π΅ ΠΎ статичСских полях Java, статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, статичСских Π±Π»ΠΎΠΊΠ°Ρ… ΠΈ статичСских Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… классах.

1. Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static языка Java. ΠœΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, Π±Π»ΠΎΠΊΠ°ΠΌ, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ классам ΠΈ ΠΊΠ°ΠΊΠΎΠ΅ это ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

2. Анатомия статичСского ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова

Π’ языкС программирования Java ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‡Π»Π΅Π½ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ самому Ρ‚ΠΈΠΏΡƒ, Π° Π½Π΅ экзСмпляру этого Ρ‚ΠΈΠΏΠ° .

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ создаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр этого статичСского Ρ‡Π»Π΅Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΎΠ±Ρ‰ΠΈΠΌ для всСх экзСмпляров класса.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΎ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, Π±Π»ΠΎΠΊΠ°ΠΌ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ классу.

3. БтатичСскиС Поля (Или ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Класса)

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния памяти статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡƒΠ» Π² памяти JVM, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Metaspace (Π΄ΠΎ Java 8 этот ΠΏΡƒΠ» назывался Permanent Generation ΠΈΠ»ΠΈ PermGen, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»Π΅Π½ ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½ Metaspace).

3.1. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ статичСского поля

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ класс Car с нСсколькими Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ экзСмпляра) . Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ· этого Car blueprint, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свою ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ копию этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… экзСмпляра.

Однако ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая содСрТит количСство ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Car ΠΈ являСтся ΠΎΠ±Ρ‰Π΅ΠΉ для всСх экзСмпляров, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ доступ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚-Ρ‚ΠΎ ΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

3.2. ВСскиС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для использования статичСских ΠΏΠΎΠ»Π΅ΠΉ

3.3. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ

4. БтатичСскиС ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ (Или ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Класса)

Подобно static полям, static ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ классу, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΈ поэтому ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π±Π΅Π· создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ находятся. Они ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для использования Π±Π΅Π· создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса.

4.1. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, которая Π½Π΅ зависит ΠΎΡ‚ создания экзСмпляра.

Если Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΌ для всСх экзСмпляров этого класса, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ этот ΠΊΠΎΠ΄ Π² статичСском ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅:

статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания слуТСбных ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… классов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±Π΅Π· создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° этих классов.

4.2. ВСскиС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для использования статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

4.3. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ

5. БтатичСский Π‘Π»ΠΎΠΊ

Π’ Ρ‚Π°ΠΊΠΈΡ… случаях пригодятся статичСскиС Π±Π»ΠΎΠΊΠΈ.

Если статичСский ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ с нСсколькими ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ статичСский Π±Π»ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

5.1. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ статичСского Π‘Π»ΠΎΠΊΠ°

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ списка с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ значСниями.

Π­Ρ‚ΠΎ становится Π»Π΅Π³ΠΊΠΎ с статичСскими Π±Π»ΠΎΠΊΠ°ΠΌΠΈ:

5.2. ВСскиС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для использования статичСских Π±Π»ΠΎΠΊΠΎΠ²

5.3. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ

6. БтатичСский класс

Π―Π·Ρ‹ΠΊ программирования Java позволяСт Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ класс Π²Π½ΡƒΡ‚Ρ€ΠΈ класса. Π­Ρ‚ΠΎ обСспСчиваСт ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ способ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ наш ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ.

АрхитСктура Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π΄Π²Π΅ части:

ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя классами Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊΠΎ всСм Ρ‡Π»Π΅Π½Π°ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ класса (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ private), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ статичСскиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы ΠΈΠΌΠ΅ΡŽΡ‚ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ статичСским Ρ‡Π»Π΅Π½Π°ΠΌ внСшнСго класса.

На самом Π΄Π΅Π»Π΅, статичСскиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы Π²Π΅Π»ΠΈ сСбя Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, Π½ΠΎ Π±Ρ‹Π»ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² СдинствСнный класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π΅ удобство ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ.

6.1. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ статичСского класса

НаиболСС ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ созданию одноэлСмСнтных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-это статичСский Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс, ΠΎΠ½ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ синхронизации ΠΈ прост Π² освоСнии ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

6.2. ВСскиС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для использования статичСского Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ класса

6.3. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ

7. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static Π² дСйствии. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ… ΠΈ прСимущСствах использования статичСских ΠΏΠΎΠ»Π΅ΠΉ, статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², статичСских Π±Π»ΠΎΠΊΠΎΠ² ΠΈ статичСских Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… классов.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘Π»ΠΎΠΊΠΈ статичСской ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° SmallSquares (малСнькиС ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ малСнького Ρ†Π΅Π»ΠΎΠ³ΠΎ числа. SmallSquares ΠΈΠΌΠ΅Π΅Ρ‚ 2 статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getSquare().

public class SmallSquares <

private static final int LIMIT = 10 ;
private static final int [] square = new int [ LIMIT ] ;

public SmallSquares () < // Π½Π΅ ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄
for ( int i = 0 ; i ) <
square [ i ] = i * i;
>
>
>
public static int getSquare ( int i ) <
// НСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибки, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, 0 return square [ i ] ;
>

public static void main ( String [] args ) <
new SmallSquares () ;
System.out.println ( «3 squared is » +
getSquare ( 3 )) ;
>
>

ΠžΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС SmallSquares, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Как Π²Ρ‹ Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ догадались ΠΈΠ· коммСнтария ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΊΠΎΠ΄. ΠœΡ‹ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌ нСдостаток Π³Ρ€Π°Π½ΠΈΡ† ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° getSquare(). Π’Π°ΠΊΠΆΠ΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ индСксация Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Ρ‡ΡƒΡ‚ΡŒ Π»ΠΈ Π½Π΅ Π΄ΠΎΡ€ΠΎΠΆΠ΅, Ρ‡Π΅ΠΌ простоС Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ числа. ΠžΡ‚Π»ΠΎΠΆΠΈΠΌ эти Ρ„Π°ΠΊΡ‚Ρ‹ Π² сторону, сконцСнтрируСмся Π½Π° нСэкономном создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

А Π΅Ρ‰Ρ‘ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Π—Π° словом статичСский (static) слСдуСт Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский Π±Π»ΠΎΠΊ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ² Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

ΠŸΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ этот Π±Π»ΠΎΠΊ Π² ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ SmallSquare послС объявлСния ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°. Из-Π·Π° статичности Π±Π»ΠΎΠΊ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ‹, ΠΊΠΎΠ³Π΄Π° создаСтся класс. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ конструктор, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getSquare() Π±Π΅Π· ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ создания класса. Π’ΠΎΡ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:

public class SmallSquares <

private static final int LIMIT = 10 ;
private static final int [] square = new int [ LIMIT ] ;

static <
for ( int i = 0 ; i ) <
square [ i ] = i * i;
>
>

public static int getSquare ( int i ) <
// НСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибки, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ,0 return square [ i ] ;
>

public static void main ( String [] args ) <
System.out.println ( «3 squared is » + getSquare ( 3 )) ;
>
>

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ этот ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊ нСстатичСским ΠΊΠΎΠ΄Π°ΠΌ. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ вводились Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ бСзымянным Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ классам ΠΏΡ€ΠΈΠΏΠΈΡΡ‹Π²Π°Π»ΠΎΡΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ состояниС. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ Π² контСкстС стандартных классов ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящий для бСзымянныС классов.

public class ConstructorExample <
private final String userName;
private final static int [] square = new int [ 10 ] ;

public ConstructorExample () < // Ρ‚Π°ΠΊ Π½Π΅ слСдуСт ΠΏΠΈΡΠ°Ρ‚ΡŒ
this ( «Anonymous» ) ;
>

ΠžΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС ConstructorExample. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ конструктора ΠΌΠΎΠΆΠ½ΠΎ привСсти Π² порядок, пСрСмСстив ΠΏΠΎΠ»Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° для ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (userName) ΠΈ ввСдя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°:

Π”Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² выглядит ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊ статичСского ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π±Π΅Π· статичСского ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова. Он запускаСтся ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ конструктор. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ инициализируСтся Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ конструктор Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ сигнатуру, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΡƒΡŽ строку (String). ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ конструктор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устанавливаСт Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, Π²Ρ‹ Π½Π΅ смоТСтС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ конструкторы Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ (ConstructorExample), ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки ΠΎΡ‚ конструктора Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ появляСтся пустой конструктор, ConstructorExample2 (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ конструктора 2), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

public class ConstructorExample2 <

private final String userName;
private static final int [] square = new int [ 10 ] ;
<
for ( int i = 0 ; i 10 ; i++ ) <
square [ i ] = i * i;
>
>

public ConstructorExample2 () <
userName = «Anonymous» ;
>

public void printSquare ( int i ) <
// НСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибки, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ,0 System.out.println ( «Hello » + userName ) ;
System.out.println ( i + » squared is » + square [ i ]) ;
>

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ AnonymousExample ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция createAnonSquare(). Π­Ρ‚Π° функция создаСт бСзымянный Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ распространяСтся Π½Π° AnonymousSquare (бСзымянный ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚). Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ инициализация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… userName ΠΈ Ed.

БСзымянный класс наслСдуСт ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ print(). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ AnonymousSquare (БСзымянный ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚) ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ print(). Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ «Hi Ed, 3 squared is 9.» (ΠŸΡ€ΠΈΠ²Π΅Ρ‚ Π­Π΄, 3 Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ 9).

static class AnonymousSquare
private static final int [] square = new int [ 10 ] ;

<
for ( int i = 0 ; i 10 ; i++ )
square [ i ] = i * i;
>

String userName;
int i;

void print () <
System.out.println ( «Hi » + userName + «, » + i
+ » squared is » + square [ i ] + ‘.’
) ;
>
>

static AnonymousSquare createAnonSquare () <
return new AnonymousSquare () <
<
userName = «Ed» ;
i = 3 ;
>
> ;
>

ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹, ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ для Π½ΠΈΡ… ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π”Π°Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ всСго подходят ΠΊ бСзымянным Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ классам ΠΈ Π½Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Java-классах. Π’Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ статичСскиС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *