БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠ°ΠΊ ΠΊ статичСским Ρ‚Π°ΠΊ ΠΈ ΠΊ нСстатичСским полям класса

БтатичСскиС классы ΠΈ Ρ‡Π»Π΅Π½Ρ‹ статичСских классов (Руководство ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² C#)

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ нСстатичСского класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ допускаСт созданиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ экзСмпляра самого сСбя, см. Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ РСализация Singleton Π² C#.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ основныС возмоТности статичСского класса.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ статичСскиС Ρ‡Π»Π΅Π½Ρ‹.

Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ экзСмпляры нСльзя.

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ статичСского класса, содСрТащСго Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ ΠΏΠΎ ЦСльсию Π² Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ ΠΏΠΎ Π€Π°Ρ€Π΅Π½Π³Π΅ΠΉΡ‚Ρƒ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

БтатичСский Ρ‡Π»Π΅Π½Ρ‹

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

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

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

C# Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ статичСскиС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² области дСйствия ΠΌΠ΅Ρ‚ΠΎΠ΄Π°).

Для объявлСния статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static ΠΏΠ΅Ρ€Π΅Π΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Ρ‡Π»Π΅Π½Π°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

БтатичСскиС Ρ‡Π»Π΅Π½Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ доступом ΠΊ статичСскому Ρ‡Π»Π΅Π½Ρƒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ статичСского конструктора, Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ имССтся. Для доступа ΠΊ Ρ‡Π»Π΅Π½Ρƒ статичСского класса слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя класса, Π° Π½Π΅ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, указывая располоТСниС Ρ‡Π»Π΅Π½Π°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

Если класс содСрТит статичСскиС поля, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ статичСский конструктор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ эти поля ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ класса.

БпСцификация языка C#

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… БтатичСскиС классы ΠΈ Π§Π»Π΅Π½Ρ‹ экзСмпляра ΠΈ статичСскиС Ρ‡Π»Π΅Π½Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ спСцификация C# 6.0. БпСцификация языка являСтся ΠΏΡ€Π΅Π΄ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌ источником ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ синтаксисС ΠΈ использовании языка C#.

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

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

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

ΠšΡ€ΠΎΠΌΠ΅ статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π² классах ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ привязаны ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ (экзСмплярам) класса ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ класса (Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊ статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ). БтатичСскиС ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ привязаны ΠΊ статичСскому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ/ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ класса.

Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ нСстатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρƒ класса нСльзя!

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

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ статичСским, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static. ΠžΠ±Ρ‰ΠΈΠΉ Π²ΠΈΠ΄ этой конструкции Ρ‚Π°ΠΊΠΎΠΉ:

ΠœΠ΅Ρ‚ΠΎΠ΄ main вызываСтся Java-машиной ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π²ΠΈΠ΄Π°: Solution.main() ;

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя класса ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠžΠ±Ρ‰ΠΈΠΉ Π²ΠΈΠ΄ этой конструкции Ρ‚Π°ΠΊΠΎΠΉ:

ΠšΠΎΠ΄Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

2. БтатичСскиС vs ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π§Π΅ΠΌ ΠΆΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…?

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ привязку ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ β€” экзСмпляру класса, статичСский ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚Π°ΠΊΠΎΠΉ привязки Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² своСм экзСмплярС класса, статичСский β€” Π½Π΅Ρ‚: Ρƒ Π½Π΅Π³ΠΎ просто Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ экзСмпляра класса, связанного с Π½ΠΈΠΌ.

ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ Π΄Π²ΡƒΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ мСтодБтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄
Π•ΡΡ‚ΡŒ связь с экзСмпляром класса Π”Π° НСт
ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Π”Π° НСт
ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Π”Π° Π”Π°
ΠœΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ класса Π”Π° НСт
ΠœΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ класса Π”Π° Π”Π°
ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π”Π° Π”Π°
ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ Ρƒ класса НСт Π”Π°

Π—Π°Ρ‡Π΅ΠΌ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½ΡƒΠΆΠ½Ρ‹, Ссли ΠΎΠ½ΠΈ Ρ‚Π°ΠΊ сильно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹? ВсС Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ свои прСимущСства.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΡƒΡŽ ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСмСнная Π±Ρ‹Π»Π° Π² СдинствСнном экзСмплярС. Как, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, пСрСмСнная System.out ( статичСская пСрСмСнная out класса System ).

И, Π²-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΈΠ½ΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅Ρ‰Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. НапримСр, Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° main(), с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ начинаСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Java-машина Π΄ΠΎ создания экзСмпляра класса.

Π•ΡΡ‚ΡŒ связь с экзСмпляром класса

ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса

КодКак ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Ну ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ случай: Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅Ρ‰Π΅ Π½Π΅ создан Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ нашСго класса. БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ? Π”Π°. А смоТСт этот статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄?

И Ρƒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠ½ Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚? Π’Π΅Π΄ΡŒ Π΅Ρ‰Π΅ Π½Π΅ сущСствуСт Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ экзСмпляра нашСго класса!

ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΡƒΠ΄Π° ΡƒΠ³ΠΎΠ΄Π½ΠΎ β€” ΠΈΠ· любого мСста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. А Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ· статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈ ΠΈΠ· ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…. Никаких ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Ρ‚ΡƒΡ‚ Π½Π΅Ρ‚.

ΠœΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ класса

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

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ класса.

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²ΠΎΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒΡΡ?

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠ°ΠΊ ΠΊ статичСским Ρ‚Π°ΠΊ ΠΈ ΠΊ нСстатичСским полям класса. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠ°ΠΊ ΠΊ статичСским Ρ‚Π°ΠΊ ΠΈ ΠΊ нСстатичСским полям класса. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠ°ΠΊ ΠΊ статичСским Ρ‚Π°ΠΊ ΠΈ ΠΊ нСстатичСским полям класса. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠ°ΠΊ ΠΊ статичСским Ρ‚Π°ΠΊ ΠΈ ΠΊ нСстатичСским полям класса. Π€ΠΎΡ‚ΠΎ БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠ°ΠΊ ΠΊ статичСским Ρ‚Π°ΠΊ ΠΈ ΠΊ нСстатичСским полям класса

ΠœΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ класса

Битуация с ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ такая ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ с обращСниями ΠΊ статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. К статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ· любого мСста Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. А Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ· статичСских ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

И статичСскиС, ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΅Π³ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ. БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: ΠΏΡ€ΠΈ этом компилятор сам ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎ Π΅Π΅ Ρ‚ΠΈΠΏΡƒ:

КодКак Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΈΡ‚ компилятор

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ Ρƒ класса

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

Π£Ρ€ΠΎΠΊ β„–125. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса

Обновл. 13 БСн 2021 |

На ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-Ρ‡Π»Π΅Π½Ρ‹ β€” это Ρ‡Π»Π΅Π½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ классу, Π° Π½Π΅ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ.

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

Если статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-Ρ‡Π»Π΅Π½Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ, Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ доступ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· имя класса ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ области видимости. Но Ρ‡Ρ‚ΠΎ, Ссли статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-Ρ‡Π»Π΅Π½Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ? Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Подобно статичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ-Ρ‡Π»Π΅Π½Π°ΠΌ, статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ привязаны ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса. Π’ΠΎΡ‚ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎ ΡƒΠΆΠ΅ со статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ:

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

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ указатСля *this

Π£ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ интСрСсныС особСнности.

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

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ статичСским Ρ‡Π»Π΅Π½Π°ΠΌ (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ функциям), Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ нСстатичСским Ρ‡Π»Π΅Π½Π°ΠΌ. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ нСстатичСскиС Ρ‡Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса, Π° статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” Π½Π΅Ρ‚!

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π²Π½Π΅ Ρ‚Π΅Π»Π° класса. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. НапримСр:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

The next ID is: 1
The next ID is: 2
The next ID is: 3
The next ID is: 4

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

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ классах со всСми статичСскими Ρ‡Π»Π΅Π½Π°ΠΌΠΈ

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

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС статичСскиС Ρ‡Π»Π΅Π½Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Ρ‚ΠΎ нСсколько ΠΊΠΎΠΏΠΈΠΉ «чисто статичСского класса» Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ (Π±Π΅Π· клонирования класса ΠΈ Π΅Π³ΠΎ дальнСйшСго пСрСимСнования). НапримСр, Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π΄Π²Π° нСзависимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса IDGenerator, Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· «чисто статичСский» класс.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΈΠ· ΡƒΡ€ΠΎΠΊΠ° ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ опасны, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ любая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… значСния ΠΈ, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, казалось Π±Ρ‹, Π½Π΅ связанного с этими ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ΄Π° (Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ см. здСсь). Π’ΠΎ ΠΆΠ΅ самоС справСдливо ΠΈ для «чисто статичСских» классов. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС Ρ‡Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ классу (Π° Π½Π΅ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ), Π° классы ΠΈΠΌΠ΅ΡŽΡ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Ρ‚ΠΎ Π² «чисто статичСском классС» ΠΌΡ‹ объявляСм Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ со всСми минусами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚.

C++ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ статичСскиС конструкторы

Если Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-Ρ‡Π»Π΅Π½ Ρ‡Π΅Ρ€Π΅Π· конструктор, Ρ‚ΠΎ ΠΏΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ Π²Π΅Ρ‰Π΅ΠΉ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-Ρ‡Π»Π΅Π½Ρ‹ Ρ‡Π΅Ρ€Π΅Π· статичСский конструктор. И, хотя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ соврСмСнныС языки программирования Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ использованиС статичСских конструкторов ΠΈΠΌΠ΅Π½Π½ΠΎ для этой Ρ†Π΅Π»ΠΈ, язык C++, ΠΊ соТалСнию, Π½Π΅ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ‚Π°ΠΊΠΎΠ²Ρ‹Ρ….

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

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠ°ΠΊ ΠΊ статичСским Ρ‚Π°ΠΊ ΠΈ ΠΊ нСстатичСским полям класса. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠ°ΠΊ ΠΊ статичСским Ρ‚Π°ΠΊ ΠΈ ΠΊ нСстатичСским полям класса. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠ°ΠΊ ΠΊ статичСским Ρ‚Π°ΠΊ ΠΈ ΠΊ нСстатичСским полям класса. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠ°ΠΊ ΠΊ статичСским Ρ‚Π°ΠΊ ΠΈ ΠΊ нСстатичСским полям класса. Π€ΠΎΡ‚ΠΎ БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊΠ°ΠΊ ΠΊ статичСским Ρ‚Π°ΠΊ ΠΈ ΠΊ нСстатичСским полям класса NEWOBJ.ru β†’ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ООП с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° C# β†’

2.5. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ поля

2.5. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ поля

Β§ 24. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Иногда ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ класса Π½Π΅ трСбуСтся доступ ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊ, Π² рассмотрСнном Π² Π³Π»Π°Π²Π΅ 2.1 ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ расчСта ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, ΠΌΠ΅Ρ‚ΠΎΠ΄ расчСта SquareGeron Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ поля класса ΠΈ, соотвСтствСнно, доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ this Π΅ΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ΅Π½. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΌ для Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ доступ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊ полям ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Для объявлСния статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static :

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Π΅Π· экзСмпляр класса, Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ€Π΅Π· имя класса. НапримСр, ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Triangle ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ статичСскому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ SquareGeron ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ способами:

Аналогично, ΠΈΠ·Π²Π½Π΅ класса, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сдСлаСм ΠΌΠ΅Ρ‚ΠΎΠ΄ SquareGeron ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ:

Π‘Π»ΠΎΠ²ΠΎ «статичСский» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ относятся ΠΊ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ Π΅Π³ΠΎ состояния.

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

ЭкзСмпляр статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ создаСтся автоматичСски Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π΅Π΅ использования (ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π½Π½ΠΎ – Π½Π΅ рСгламСнтируСтся), Π° ΠΏΡ€ΠΈ создании экзСмпляров класса ΠΏΠ°ΠΌΡΡ‚ΡŒ для статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ выдСляСтся. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ послС запуска прилоТСния ΠΈ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ увСличСния значСния newCount Π±ΡƒΠ΄Π΅Ρ‚ создан Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ создаваСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Point Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² своСм конструкторС.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ статичСским полям Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС ΠΏΠΎΠ»Π΅ΠΉ.

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

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, статичСскиС поля, ΠΊΠ°ΠΊ ΠΈ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ достаточно ΡˆΠΈΡ€ΠΎΠΊΠΎ. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

ПолоТим, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй прилоТСния Π² зависимости ΠΎΡ‚ Ρ€ΠΎΠ»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Для этого Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ фиксируСтся ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ возмоТностСй ( features ) ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², выполняСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ Π»ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ доступ ΠΊ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ возмоТности. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ возмоТности ΠΈ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ строк – список Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… возмоТностСй. Π’ΠΎΠ³Π΄Π° авторизация ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° этого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² написании названия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ возмоТности. Однако ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ допустимыС названия ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ нСизмСняСмыС статичСскиС поля Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ класса:

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΉΡ‚ΠΈ Π΅Ρ‰Π΅ дальшС, сохраняя Π² классС ACL Π½Π΅ массив строк, Π° массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Features :

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

Вопросы ΠΈ задания

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, статичСскиС поля?

Π’Π΅Ρ€Π½ΠΎ Π»ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ статичСских классах ΠΈΠ»ΠΈ статичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²? Π’ Ρ‡Π΅ΠΌ ΠΈΡ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ (Ссли Π²Π΅Ρ€Π½ΠΎ) ΠΎΡ‚ нСизмСняСмых классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²?

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ полям ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ доступ ΠΊ полям ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ класса, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°?

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля класса:

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

* Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ пСрСчислСний Π² C# ( enum ).

35. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ ΠΏΠΎΠΏΡƒΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ шаблон Β«ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ°Β» Π² соврСмСнной ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ часто стрСмятся Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π° шаблон «инвСрсии управлСния».↩︎

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

BestProg

БтатичСскиС классы, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. БтатичСскиС конструкторы. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static

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

Поиск Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах:

1. КакиС элСмСнты языка программирования C# ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ статичСскими?

Π’ языкС программирования C# статичСскими ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ:

⇑

2. ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ статичСского класса. КакиС особСнности использования статичСских классов Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° C#? ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния синтаксиса C# статичСский класс – это класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом static.

ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° объявлСния статичСского класса:

Π³Π΄Π΅ ClassName – имя статичСского класса.

⇑

3. Бвойства статичСского класса

РСализация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° статичСского класса Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ класса Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΡƒΡ… основных свойств. Π’ сравнСнии с нСстатичСским классом, статичСский класс ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства (отличия):

⇑

4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ свойства статичСского класса

Если ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ статичСского класса

Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка компиляции с сообщСниСм:

Ρ‚ΠΎ Π²ΠΎ врСмя компиляции компилятор выдаст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

⇑

5. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ статичСских классов

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ классов Count ΠΈ Methods ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Если Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класс Count ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ нСстатичСский (Π±Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова static )

Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ измСнится. Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Count.count ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‰ΠΈΠΉ рСсурс.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт использованиС статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² нСстатичСском классС. БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ выступаСт ΠΎΠ±Ρ‰ΠΈΠΌ рСсурсом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ±Ρ‰ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

⇑

6. КакиС прСимущСства примСнСния статичСских классов, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° C#?

БтатичСскиС классы, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ эффСктивны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях:

⇑

7. Π§Π΅ΠΌ отличаСтся Π²Ρ‹Π·ΠΎΠ² статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΡ‚ нСстатичСского?

Π’ любом нСстатичСском классС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊ ΠΈ нСстатичСскиС. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ статичСского ΠΈ нСстатичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса состоит Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

НиТС дСмонстрируСтся Π²Ρ‹Π·ΠΎΠ² ΠΈ использованиС этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

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

⇑

8. МоТно Π»ΠΈ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ скрытый ( private ) статичСский Ρ‡Π»Π΅Π½ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ классС?

Π”Π° ΠΌΠΎΠΆΠ½ΠΎ. Π’ этом случаС этот статичСский Ρ‡Π»Π΅Π½ класса Π±ΡƒΠ΄Π΅Ρ‚ доступным Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… этого класса, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² этого класса. Доступ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… классов Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½.

⇑

Π”Π° ΠΌΠΎΠΆΠ½ΠΎ. Π’ этом случаС, доступ ΠΊ статичСского Ρ‡Π»Π΅Π½Ρƒ класса Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ унаслСдованы ΠΎΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса.

⇑

10. ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ нСстатичСский класс ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹?

Π”Π° ΠΌΠΎΠΆΠ΅Ρ‚. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² нСстатичСском классС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ… 5 ΠΈ 7.

⇑

11. МоТно Π»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ статичСскиС ΠΈ нСстатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΌ классС?

Π”Π°, ΠΌΠΎΠΆΠ½ΠΎ. Но Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² нСстатичСском классС. Если класс объявлСн ΠΊΠ°ΠΊ статичСский, Ρ‚ΠΎ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ статичСскими (см. ΠΏ. 4 β€” ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2).

Π’ Π½ΠΈΠΆΠ΅ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ продСмонстрирован доступ ΠΊ скрытой статичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ t класса CMyClass

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ…ΠΎΡ€ΠΎΡˆΠΎ дСмонстрируСт, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΠ±Ρ‰ΠΈΠΌΠΈ, скрытыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ класса.

⇑

12. МоТно Π»ΠΈ Π² статичСском ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ статичСского класса ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ нСстатичСского класса?

⇑

13. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ статичСскиС конструкторы? ΠŸΡ€ΠΈΠΌΠ΅Ρ€

БтатичСскиС конструкторы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ДСмонстрируСтся объявлСниС статичСского конструктора Π² классС.

ДСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹ класса CCount Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅

⇑

14. КакиС ΠΏΡ€Π°Π²ΠΈΠ»Π° (особСнности) использования статичСских конструкторов?

ΠŸΡ€ΠΈ использовании статичСских конструкторов Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

⇑

15. МоТно Π»ΠΈ ΠΈΠ· статичСских конструкторов ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСстатичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса?

НСт, нСльзя. Из статичСских конструкторов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ статичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ этого ΠΆΠ΅ класса. Если Π² этом классС Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ нСстатичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‚ΠΎ доступа ΠΊ Π½ΠΈΠΌ ΠΈΠ· статичСских конструкторов Π½Π΅Ρ‚Ρƒ.

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

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

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