Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Как ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Java

ΠŸΡ€ΠΎΡ‡Π΅Π΅ β€Ί Java

Как ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ статичСскому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Java? А Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄, достаточно Ρ‡Ρ‚ΠΎΠ±Ρ‹ просто сущСствовал статичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ всСгда сущСствуСт послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ класса Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ). ИмСнно поэтому ΠΌΠ΅Ρ‚ΠΎΠ΄ main() β€” статичСский. Он привязан ΠΊ статичСскому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса, для Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

  1. МоТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄
  2. Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄
  3. Когда ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Java
  4. Когда Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ static
  5. Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ статичСский класс Java
  6. ΠŸΠΎΡ‡Π΅ΠΌΡƒ нСльзя ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Java
  7. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Java
  8. МоТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ private ΠΌΠ΅Ρ‚ΠΎΠ΄
  9. Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Java
  10. Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ static Π² Java
  11. Как ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ статичСский класс
  12. МоТно Π»ΠΈ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС поля
  13. Π§Π΅ΠΌ отличаСтся static ΠΎΡ‚ non static
  14. Π§Π΅ΠΌ отличаСтся static пСрСмСнная ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ
  15. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄
  16. МоТно Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² интСрфСйсах
  17. Π“Π΄Π΅ хранятся статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Java
  18. ΠŸΠΎΡ‡Π΅ΠΌΡƒ абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ статичСским
  19. МоТно Π»ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Java
  20. МоТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ private ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Java
  21. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ статичСский класс Java
  22. Π§Π΅ΠΌ статичСскиС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ НСстатичСских
  23. ΠŸΠΎΡ‡Π΅ΠΌΡƒ нСльзя Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ статичСского класса
  24. Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ статичСскиС поля ΠΎΡ‚ НСстатичСских
  25. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ contains Java
  26. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ public static
  27. Как ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса Java
  28. Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Java
  29. Как ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Java

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π΅Ρ‚. Π’ случаС со статичСскими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ это Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (overriding), Π° сокрытиС (hiding).

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ словом function ставится ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ static:? ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ свойствам ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ имя класса ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€::, вмСсто ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ доступа ->, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ относится ΠΊΠΎ всСму классу, Π° Π½Π΅ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ этого класса.

Если ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ зависит ΠΎΡ‚ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°(Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ класса), ΠΌΠ΅Ρ‚ΠΎΠ΄ слСдуСт ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ статичСский. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Π΄Π²ΡƒΡ… случаях: Когда ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π½Π΅ трСбуСтся доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎ состоянии ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ явно (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Math.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ static ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для объявлСния статичСского Ρ‡Π»Π΅Π½Π°, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ собствСнно Ρ‚ΠΈΠΏΡƒ, Π° Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ static ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для объявлСния классов static.

Для создания ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ‡Π»Π΅Π½Π° класса, Π½ΡƒΠΆΠ½ΠΎ Π² Π½Π°Ρ‡Π°Π»ΠΎ Π΅Π³ΠΎ объявлСния ΠΏΠ΅Ρ€Π΅Π΄ объявлСниСм Ρ‚ΠΈΠΏΠ° ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static.

Π’ этом случаС ΠΎΠ½ становится доступСн Π΄ΠΎ создания ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΅Π³ΠΎ класса ΠΈ Π±Π΅Π· ссылки Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. БтатичСскими ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

ΠœΠ΅Ρ‚ΠΎΠ΄ с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ static относится ΠΊ классу, Π° Π½Π΅ ΠΊ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ. Для Π½Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ статичСскоС связываниС, поэтому ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (override) Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Java

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² β€” это ΠΏΡ€ΠΈΡ‘ΠΌ программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π² ΠΎΠ΄Π½ΠΎΠΌ классС для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ имя. Π’ этом случаС ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½. Π’ ЛистингС 1 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ количСством, Ρ‚ΠΈΠΏΠΎΠΌ ΠΈ порядком.

МоТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ private ΠΌΠ΅Ρ‚ΠΎΠ΄

ΠŸΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (private) нСльзя ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° этапС компиляции, Π° Π½Π΅ выполнСния. НСльзя ΡΡƒΠΆΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с public Π΄ΠΎ private.

Π’ языкС программирования Java ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом static ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ Ρ‡Π»Π΅Π½Ρ‹ (поля ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ классу, Π° Π½Π΅ экзСмпляру этого класса. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π±Ρ‹ количСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Ρ‹ Π½Π΅ создали, всСгда Π±ΡƒΠ΄Π΅Ρ‚ создан Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ‡Π»Π΅Π½, доступный для использования всСми экзСмплярами класса.

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

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

Serializable, сСриализуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. БтатичСскиС поля Π½Π΅ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ.

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

ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ статичСских ΠΈ нСстатичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса привязаны ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ своСго класса (экзСмплярам класса), статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ β€” ΠΊ статичСскому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса. Если экзСмпляров класса нСсколько, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… сущСствуСт своя копия нСстатичСских (ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… класса.

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ (static) класса β€” ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ доступа ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ (полям) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ this. Π‘Π»ΠΎΠ²ΠΎ «статичСский» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ относятся ΠΊ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ Π΅Π³ΠΎ состояния.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² интСрфСйсах Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ· интСрфСйса, Π° Π½Π΅ ΠΈΠ· Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Π΅Π³ΠΎ класса.

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

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

Π’Π°ΠΊ Π²ΠΎΡ‚, статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (ΠΊΠ°ΠΊ ΠΈ поля) Π² Java Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, Π½ΠΎ Π·Π°Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚Ρ‹.

МоТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ private ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Java

НС Π²Π°ΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ это β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅Ρ‚. private Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ β€” это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ области видимости поля ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

БтатичСским классом Π² java ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс. Если класс ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ static, Ρ‚ΠΎ ΠΎΠ½ Π²Π΅Π΄Π΅Ρ‚ сСбя, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ класс. На ΠΌΠΎΠΉ взгляд использованиС статичСского класса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ умСстно, ΠΊΠ°ΠΊ нСбольшой класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ смыслу тСсно связан с «основным» внСшним классом.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… нСстатичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для всСго класса.

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

ΠŸΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° создаСтся своя копия нСстатичСских ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ. А статичСскиС поля ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ для всСго класса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ contains Java

Contains(String)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, встрСчаСтся Π»ΠΈ указанная подстрока Π²Π½ΡƒΡ‚Ρ€ΠΈ этой строки.

Public β€” это ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа (видимости). ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ public Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ доступСн Π»ΡŽΠ±ΠΎΠΌΡƒ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ классу ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π‘ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Ρ… доступа расскаТСм Π² пятом ΠΌΠΎΠ΄ΡƒΠ»Π΅. static β€” это ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Как ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса Java

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ этого класса ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· имя класса, Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСский.

Π’ΠΎ Π΅ΡΡ‚ΡŒ это ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Π’Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π±Π΅Π· создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ссли статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ нСстатичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ попросту Β«Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΒ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ объявлСн), Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка.

Если Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΡΠ²Π½ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ статичСского Ρ‡Π»Π΅Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² мСстС Π΅Π³ΠΎ объявлСния, Ρ‚ΠΎΠ³Π΄Π° это осущСствляСтся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ для нСстатичСского Ρ‡Π»Π΅Π½Π° Π΄Π°Π½Π½Ρ‹Ρ…: class MyClass { static int d = 25; // инициализация статичСского Ρ‡Π»Π΅Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ static float x = 108.35; }

  • МоТно Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² интСрфСйсах

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Python. Π£Ρ€ΠΎΠΊ 9 курса «ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python»

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

Однако Π² случаС классов, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ примСняСтся ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, этот экзСмпляр пСрСдаСтся Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

>>> class A:
...     def meth(self):
...             print('meth')
... 
>>> a = A()
>>> a.meth()
meth
>>> A.meth(a)
meth

Π’Ρ‹Π·ΠΎΠ² a.meth() Π½Π° самом Π΄Π΅Π»Π΅ прСобразуСтся ΠΊ A.meth(a), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ ΠΈΠ΄Π΅ΠΌ ΠΊ «ΠΌΠΎΠ΄ΡƒΠ»ΡŽ A» ΠΈ Π² Π΅Π³ΠΎ пространствС ΠΈΠΌΠ΅Π½ ΠΈΡ‰Π΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ meth. Π’Π°ΠΌ оказываСтся, Ρ‡Ρ‚ΠΎ meth это функция, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. Π’ΠΎΠ³Π΄Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

>>> b = 10
>>> A.meth(b)
meth

Π’ Ρ‚Π°ΠΊΠΎΠΌ «ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅» Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-экзСмпляр ΠΈΠΌΠ΅Π½Π½ΠΎ класса A совсСм Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Однако нСльзя ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

>>> b = 10
>>> b.meth()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object 
has no attribute 'meth'

Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ пСрСдаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π² Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ, Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ описан Π² Ρ‚ΠΎΠΌ классС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ»ΠΈ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классах. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρƒ класса int Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° meth(). ΠžΠ±ΡŠΠ΅ΠΊΡ‚

b классу A Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ meth().

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π» Π±Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°? Π”Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· класс:

>>> class A:
...     def meth():
...             print('meth')
... 
>>> A.meth()
meth
>>> a = A()
>>> a.meth()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: meth() takes 0 positional 
arguments but 1 was given

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ странная ситуация. Π’Π΅Π΄ΡŒ meth() вызываСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· класса, Π½ΠΎ ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Однако Π² послСднСм случаС всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ошибка. Π’ΠΎ Π΅ΡΡ‚ΡŒ имССтся ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Π½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляр Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса.

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

Π’ Python острой нСобходимости Π² статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… Π½Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ класса, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΈΠ· класса. Если Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° просто какая-Π½ΠΈΠ±ΡƒΠ΄ΡŒ функция, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π΅ Π² основной Π²Π΅Ρ‚ΠΊΠ΅. Π’ Java это Π½Π΅ Ρ‚Π°ΠΊ. Π’Π°ΠΌ, Π½Π΅ считая ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ², вСсь ΠΊΠΎΠ΄ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ классов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса ΠΈ ΠΈΠ³Ρ€Π°ΡŽΡ‰ΠΈΠ΅ Ρ€ΠΎΠ»ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Однако Π² Python Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° @staticmethod:

>>> class A:
...     @staticmethod
...     def meth():
...             print('meth')
... 
>>> a = A()
>>> a.
meth() meth >>> A.meth() meth

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ:

>>> class A:
...     @staticmethod
...     def meth(value):
...             print(value)
... 
>>> a = A()
>>> a.meth(1)
1
>>> A.meth('hello')
hello

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Python – ΠΏΠΎ-сути ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Π΅ Π² класс для удобства ΠΈ находящиСся Π² пространствС ΠΈΠΌΠ΅Π½ этого класса. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π’ΠΎΠΎΠ±Ρ‰Π΅, Ссли Π² Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ self, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ссылка Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, слСдуСт Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским. Если Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для обСспСчСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ класса, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π΄ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ статичСским, Π½ΠΎ ΠΈ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΡ‚ доступа ΠΈΠ· Π²Π½Π΅.

ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ класс «Π¦ΠΈΠ»ΠΈΠ½Π΄Ρ€». ΠŸΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΡ‚ этого класса Ρƒ Π½ΠΈΡ… заводятся поля высота ΠΈ Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ повСрхности. ВычислСниС ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Она Π²Ρ€ΠΎΠ΄Π΅ ΠΈ относится ΠΊ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°ΠΌ, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны само вычислСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ.

from math import pi
Β 
class Cylinder:
    @staticmethod
    def make_area(d, h):
        circle = pi * d ** 2 / 4
        side = pi * d * h
        return round(circle*2 + side, 2)
Β 
    def __init__(self, di, hi):
        self.dia = diameter
        self.h = high
        self.area = self.make_area(di, hi)
Β 
Β 
a = Cylinder(1, 2)
print(a.area)
Β 
print(a.make_area(2, 2))

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹Π·ΠΎΠ² make_area() Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ класса Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π² Ρ‚ΠΎΠΌ числС Ρ‡Π΅Ρ€Π΅Π· экзСмпляр. ΠŸΡ€ΠΈ этом понятно, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС свойство area самого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° a Π½Π΅ мСняСтся. ΠœΡ‹ просто Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽΡΡ Π² пространствС ΠΈΠΌΠ΅Π½ класса.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² ΠΊΠΎΠ½Ρ†Π΅ ΡƒΡ€ΠΎΠΊΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ»ΠΎΡ…ΠΎΠΉ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния ΠΏΠΎΠ»Π΅ΠΉ dia ΠΈ h ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ класса простым присваиваниСм (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, a.dia = 10). ΠŸΡ€ΠΈ этом ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ, ΠΊΠ°ΠΊ простым присваиваниСм, Ρ‚Π°ΠΊ ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ make_area() с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ присваиваниСм. НапримСр, a. area = a.make_area(2, 3). ΠŸΡ€ΠΈ этом Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ высота ΠΈ Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€.

Π—Π°Ρ‰ΠΈΡ‚ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΎΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… логичСских ошибок ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • Бвойствам dia ΠΈ h ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ присваиваниС Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ класса. Однако ΠΏΡ€ΠΈ этом «Π·Π° кулисами» происходит пСрСсчСт ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ, Ρ‚. Π΅. ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ значСния area.

  • Бвойству area нСльзя ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ класса. МоТно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Подсказка: вспомнитС ΠΏΡ€ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ __setattr__(), упомянутый Π² ΡƒΡ€ΠΎΠΊΠ΅ ΠΏΡ€ΠΎ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ.

ΠšΡƒΡ€Ρ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ практичСских Ρ€Π°Π±ΠΎΡ‚:
pdf-вСрсия, android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅


Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄?

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄?

Π’ Java статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ классу, Π° Π½Π΅ экзСмпляру класса. ΠœΠ΅Ρ‚ΠΎΠ΄ доступСн для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ экзСмпляра класса, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² экзСмплярС, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса.

Advertisements

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

ΠŸΡ€ΠΎΡ‰Π΅ говоря, это ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΅Ρ‰Π΅ Π½Π΅ создан, ΠΈ для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ трСбуСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Ρ‹Π·ΠΎΠ²Π°.

Techopedia ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄

Java позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ доступны для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ экзСмпляра класса.

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

ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ использованиС статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

НаиболСС распространСнноС использованиС статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² β€” доступ ΠΊ статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. Доступ ΠΊ Π½ΠΈΠΌ осущСствляСтся ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ΅ (.), Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Они ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом Β«staticΒ» ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

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

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ часто ΡΠ²Π»ΡΡŽΡ‚ΡΡ слуТСбными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ

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

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Java 8

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² интСрфСйсах Π² Java 8 ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсиях. Π’ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ошибок классы Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса.

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΊΠΎΠ³Π΄Π°:

  • ВсС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляра Π΄ΠΎΠ»ΠΆΠ½Ρ‹ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° (хотя Ρƒ вас всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра для этого).

  • Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π΅ создавая экзСмпляр этого класса.

  • Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ слуТСбный класс Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ измСняСтся.

  • Π’Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ.

  • Π’Π°Ρˆ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ экзСмпляра, ΠΈ ΠΊΠΎΠ΄ Π½Π΅ зависит ΠΎΡ‚ создания экзСмпляра.

Advertisements

Когда Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским Π² Java? ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским Π² Java β€” Π²Π°ΠΆΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… понятий, программисты часто ΠΏΡƒΡ‚Π°ΡŽΡ‚ΡΡ, дСлая ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Java основной ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ создания статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся удобство 9.0062 . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Π΅Π· создания ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ имя Π΅Π³ΠΎ класса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ нСпосрСдствСнно ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса, сдСлайтС этот ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским. Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ классы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. java.lang.Math ΠΈΠ»ΠΈ StringUtils β€” Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ классов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ограничСния статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Java.

Помня ΠΎΠ± этих свойствах, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ нСсколько ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ³Π΄Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским Π² Java ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎ Java ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ большС ΠΎ прСимущСствах ΠΈ ограничСниях статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ рассмотрим ΠΏΠ°Ρ€Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ· JDK, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Java.



Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Java?

Когда Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² ΠΊΠΎΠ΄Π΅ Java, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚Π΅? КакиС рассуТдСния ΠΈ прСдполоТСния Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄? Π’Π°ΠΆΠ½ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄.

1) БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ измСняСт состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° сохраняСтся ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ экзСмпляра, Π° Java Π½Π΅ допускаСт нСстатичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² статичСском контСкстС. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ IDE, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Netbeans, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ курсивом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

2) БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² основном Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΏΠΎΡ‡Ρ‚ΠΈ всС статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вычислСния ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским Π² Java

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

1) Если ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ измСняСт состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ экзСмпляра.

2) Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π΅ создавая экзСмпляр этого класса.

3) ΠœΠ΅Ρ‚ΠΎΠ΄ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠΌ Π½Π° Ρ€ΠΎΠ»ΡŒ статичСского, Ссли ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π΅ΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. public int factorial(int number){}, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с числом, прСдоставлСнным Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

4) Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°ΠΌΠΈ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ статичСскими, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. StringUtils.isEmpty(тСкст строки), это слуТСбный ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, являСтся Π»ΠΈ строка пустой ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

5) Если функция ΠΌΠ΅Ρ‚ΠΎΠ΄Π° останСтся статичСской Π² ​​иСрархии классов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠœΠ΅Ρ‚ΠΎΠ΄ equals() Π½Π΅ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠΌ для создания статики, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ равСнство.

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Java?

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ прСимущСства ΠΈ ограничСния статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Java, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠ°Ρ€Ρƒ сцСнариСв, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π€Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ шаблон проСктирования обСспСчиваСт Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ использованиС статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ для создания экзСмпляров класса. Π”Π°ΠΆΠ΅ ΠΊΠ½ΠΈΠ³Π° Effective Java совСтуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСский Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ· Π½ΠΈΡ… Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Java ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΏΡƒΠ» ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈΠ· класса Executors.

Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ мноТСство статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для создания Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡƒΠ»ΠΎΠ² ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. public static ExecutorService newCachedThreadPool(), public static ExecutorService newFixedThreadPool(int nThreads) ΠΈ Ρ‚. Π΄.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ интСрСсноС использованиС статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ· JDK β€” это классы ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ массивы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт мноТСство статичСских слуТСбных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ для создания Π½Π°Π±ΠΎΡ€Π° явных элСмСнтов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. EnumSet.of(E сначала, E… ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅). Помимо этого, Ссли Π²Ρ‹ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Apache commons-lang, Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ шаблон класса utils, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. StringUtils, ArrayUtils, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ слуТСбныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками ΠΈ массивами.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ интСрСсноС использованиС статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я Π²ΠΈΠ΄Π΅Π», β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ valueOf() Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… классов Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. java.lang.String, хотя это Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„Π°Π±Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, это Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

НапримСр, valueOf() Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для прСобразования строки Π² Ρ†Π΅Π»ΠΎΠ΅ число Π² Java. ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

1) Наряду с творчСским шаблоном проСктирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€.