Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом Π² Java

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом Π² Java. Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ интСрфСйсом ΠΈ абстрактным классом. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈΠ»ΠΈ абстрактный класс, Java 8 измСняСт эффСкт

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

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

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΈΠ»ΠΈ Абстрактный класс

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

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ абстрактныС классы ΠΈ интСрфСйс ΠΊΠ°ΠΊ

ΠœΡ‹ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ интСрфСйса ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ подкласс, Π° Π·Π°Ρ‚Π΅ΠΌ, Ссли Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ подкласс, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ интСрфСйс ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ интСрфСйс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

ΠŸΠΎΠ΄ΠΊΠ»Π°ΡΡΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ интСрфСйсом ΠΈΠ»ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ интСрфСйсом для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² соотвСтствии с Π΅Π³ΠΎ трСбованиями.

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

ИзмСнСния интСрфСйса Java 8

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

Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Ρ‚ΡŒ Ρ€Π°Π·Ρ€Ρ‹Π² ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактными классами ΠΈ интСрфСйсами, ΠΈ Π½ΠΎΠ²Ρ‹Π΅ интСрфСйсы-это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π΅Ρ‰Π΅ большС, прСдоставив Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

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

ООП. Π§Π°ΡΡ‚ΡŒ 6. АбстрактныС классы ΠΈ интСрфСйсы

Π£Π·Π½Π°ΠΉΡ‚Π΅ ΠΈΡΡ‚ΠΈΠ½Π½ΡƒΡŽ ΠΌΠΎΡ‰ΡŒ наслСдования ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°! РаскрываСм сСкрСты абстрактных классов ΠΈ интСрфСйсов.

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, насколько ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ становится ООП благодаря наслСдованию. Но ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ Π»ΡƒΡ‡ΡˆΠ΅, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ абстрактныС классы ΠΈ интСрфСйсы.

ВсС ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€ΠΎ ООП

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

ΠŸΠΈΡˆΠ΅Ρ‚ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π² свободноС врСмя создаСт ΠΈΠ³Ρ€Ρ‹. ΠœΠ΅Ρ‡Ρ‚Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ свою ΡΡ‚ΡƒΠ΄ΠΈΡŽ ΠΈ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π»Π°ΠΌΠΏΠΎΠ²Ρ‹Π΅ RPG.

АбстрактныС классы

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ абстрактных классов Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Для ΠΈΡ… объявлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово abstract.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΄Ρ€ΡƒΠ³ΠΈΡ… схоТих классов. НапримСр, Π² вашСй ΠΈΠ³Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ пСрсонаТ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈ NPC (Π½Π΅ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ пСрсонаТи). Π£ Π½ΠΈΡ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ свойства (имя, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹) ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ).

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΊΠΎΠ΄ нСсколько Ρ€Π°Π·, ΠΌΠΎΠΆΠ½ΠΎ вынСсти Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ этих свойств ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² абстрактный класс Character:

Π’ΡƒΡ‚ всё ΠΊΠ°ΠΊ Ρƒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… классов, Π½ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ объявлСниС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±Π΅Π· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. РСализация этих абстрактных свойств Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС:

Когда ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ рСализация Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‡Π»Π΅Π½Π° класса, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово override. Абстрактными ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π»Π΅Π½Ρ‹ класса:

Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всС Ρ‡Π»Π΅Π½Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ абстрактного класса, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ… случаСв, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс Ρ‚ΠΎΠΆΠ΅ абстрактный.

Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ всё ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ классы. НапримСр, ΠΏΠΎΠ»Π΅ Y класса Character ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² свойствС Y Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классов.

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Абстрактный класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ.

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

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом Π² Java

НСкоторыС ΠΈΠ· популярных вопросов ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ: Β«Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом», «Когда Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ абстрактный класс ΠΈ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс». Π˜Ρ‚Π°ΠΊ, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠΉΠ΄Π΅ΠΌ эту Ρ‚Π΅ΠΌΡƒ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ различиям ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΈΡ… Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅.

Абстрактный класс

АбстрактныС классы ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ для Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΎΠ±Ρ‰ΠΈΡ… характСристик подклассов. Π•Π³ΠΎ нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, Π΅Π³ΠΎ подклассы ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ супСркласс. АбстрактныС классы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания шаблона для Π΅Π³ΠΎ подклассов Π²Π½ΠΈΠ· ΠΏΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ возьмСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ класса JDK GenericServlet:

Когда HttpServlet Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвлСт, ΠΎΠ½ обСспСчиваСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° service ():

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ β€” это коллСкция абстрактных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс, Ρ‚Π΅ΠΌ самым наслСдуя абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ это своСго Ρ€ΠΎΠ΄Π° подписаниС ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°, Π²Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚Π΅ этот интСрфСйс, Ρ‚ΠΎ Π²Π°ΠΌ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π­Ρ‚ΠΎ просто шаблон, ΠΎΠ½ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сам.

Π”Π°Π²Π°ΠΉΡ‚Π΅ возьмСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ внСшнСго интСрфСйса:

Когда Π²Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚Π΅ этот интСрфСйс, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

Абстрактный класс ΠΏΡ€ΠΎΡ‚ΠΈΠ² интСрфСйса

парамСтрАбстрактный ΠΊΠ»Π°ΡΡΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ
РСализация ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΠœΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ β€” это чистая абстракция. НС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅.
Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡΠŸΠΎΠ΄ΠΊΠ»Π°ΡΡΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово extends для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ абстрактного класса, ΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ всСх ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² абстрактном классС, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ подкласс Π½Π΅ являСтся Ρ‚Π°ΠΊΠΆΠ΅ абстрактным классом.подклассы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Implements для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйсов ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… Π² интСрфСйсС.
ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ΠΠ±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ конструктор
ΠžΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ΡΡ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Java-классаАбстрактныС классы ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ классы Java, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΡ… экзСмпляр.Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ совсСм Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°
ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π΄ΠΎΡΡ‚ΡƒΠΏΠ°ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ абстрактного класса ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ, Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ, ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ общСдоступны. Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа с Π½ΠΈΠΌ
Основной () мСтодАбстрактныС классы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ main, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ основного ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, поэтому ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.
ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиСАбстрактный класс ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ класс ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько интСрфСйсов.Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько интСрфСйсов.
ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΠ­Ρ‚ΠΎ быстрСС, Ρ‡Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ нСсколько ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ поиск ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² классС Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя
Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ мСтодаЕсли Π²Ρ‹ добавляСтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² абстрактный класс, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ свой Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ кодЕсли Π²Ρ‹ добавляСтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² интСрфСйс, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ этот интСрфСйс

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Абстрактный класс ΠΈ интСрфСйс:

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ стандартных ΠΈ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Java 8

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

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

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

1. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ классы ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΈΡΠΏΠΎΡΠΎΠ±ΠΈΡ‚ΡŒ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΠΎΒ­Π²ΠΎΠ³ΠΎ интСрфСйса.
ПояснСниС: для этого достаточно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ implements ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Но ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ классы Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Π½Ρ‹ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ абстрактного класса. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π²Π° класса Ρ€Π°ΡΡˆΠΈΡ€ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ абстрактный класс, Π²Π°ΠΌ придСтся ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ этот класс Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ высоко, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ стал ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ ΠΎΠ±ΠΎΠΈΡ… этих классов. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ², заставляя всСх ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ абстрактного класса Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π΅Π³ΠΎ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько это цСлСсообразно.

2. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ идСально подходят для создания миксинов.
ПояснСниС: Миксин (mixin) β€” это Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ своСму «ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ», объявляя ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ этот класс прСдоставляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. НапримСр, Comparable являСтся Ρ‚Π°ΠΊΠΈΠΌ интСрфСйсом-миксином, Ρ‚.ΠΊ. добавляСт (ΠΏΡ€ΠΈΠΌΠ΅ΡˆΠΈΠ²Π°Π΅Ρ‚) ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ возмоТностям Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ абстракт­ныС классы для создания миксинов нСльзя ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΡ… Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠΏΠΎΡΠΎΠ±ΠΈΡ‚ΡŒ ΠΊ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ классам: класс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ родитСля, ΠΈ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов Π½Π΅Ρ‚ подходящСго мСста, ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ миксин.

3. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ нСиСрархичСскиС каркасы Ρ‚ΠΈΠΏΠΎΠ².
ПояснСниС: ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² прСкрасно подходят для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сущностСй, Π½ΠΎ Π·Π°Ρ‚ΠΎ сущности Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΡƒΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ ΠΈΠ΅Β­Ρ€Π°Ρ€Ρ…ΠΈΡŽ. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ ΠΈΠΌ являСтся раздутая иСрархия классов.

4. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ бСзопасноС ΠΈ ΠΌΠΎΡ‰Π½ΠΎΠ΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΒ­ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с использованиСм шаблона Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ позволяСт динамичСски (Π² Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π½ΠΎΠ²Ρ‹Π΅ возмоТности (состояниС ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅) Π½Π° основС ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.

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

ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ абстрактного класса ΠΎΡ‚ интСрфСйса (abstract class and interface)

ΠšΠ°ΠΊΠΎΠ²Ρ‹ отличия ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом?

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

13 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² 13

Абстрактный класс β€” это класс, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ большС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ языки Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами).

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ β€” это абстрактный класс, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½, всС ΠΎΠ½ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈ Π½Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… класса.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π½ΡƒΠΆΠ΅Π½ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠΎΠ³Π΄Π° описываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ интСрфСйс (тавтология). НапримСр, ΠΎΠ΄ΠΈΠ½ класс Ρ…ΠΎΡ‡Π΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ доступа ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ своим ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, Π½ΠΎ Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚ сСбя Β«Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΒ». ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½ просто Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс.

Абстрактный класс Π½ΡƒΠΆΠ΅Π½, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ сСмСйство классов, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ интСрфСйс, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках (Π‘++) ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова для обозначСния интСрфСйсов Π½Π΅Ρ‚.

МоТно ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ любой интСрфСйс β€” это ΡƒΠΆΠ΅ абстрактный класс, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

tl;dr: Абстрактный класс β€” срСдство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ классов Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, срСдство для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°; интСрфСйс β€” срСдство выраТСния сСмантики класса. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅, ΠΌΠ°Π»ΠΎ связанныС ΠΌΠ΅ΠΆΠ΄Ρƒ собой понятия.

Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± этом ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

Абстрактный класс β€” это Β«Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Β» класса: Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅), ΠΊΡ€ΠΎΠΌΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ…. Π­Ρ‚ΠΈ нСсколько Π½Π΅Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ класса, ΠΎΠ½ΠΈ лишь ΡƒΡ‚ΠΎΡ‡Π½ΡΡŽΡ‚ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Абстрактный класс β€” срСдство для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°, срСдство, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ обязан Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ написания класса.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΆΠ΅ β€” это своСго Ρ€ΠΎΠ΄Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚: интСрфСйсы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² опрСдСлСниях Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ использован Π½Π° самом Π΄Π΅Π»Π΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ (для Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²) ΠΈΠ»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ (для Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²) Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ (Ρ‡Ρ‚ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½Π΅Π΅!) ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ сСмантику. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ пустым, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ сСмантику.

АбстрактныС классы идСологичСски схоТи с шаблонами C++: ΠΈ Ρ‚Π΅, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°ΠΌΠΈ классов, Π½ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ для получСния класса Π½ΡƒΠΆΠ½ΠΎ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Π° абстрактному классу β€” абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ идСологичСски схоТи с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ C++: ΠΎΠ½ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Вопрос ΠΎ Ρ‚ΠΎΠΌ, являСтся Π»ΠΈ интСрфСйс ΠΈΠ»ΠΈ абстрактный класс собствСнно классом β€” тСхничСская ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, зависящая ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка программирования. НапримСр, Π² C++ интСрфСйсы ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ вовсС, ΠΈ ΠΈΡ… приходится ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ классами Π±Π΅Π· Π΄Π°Π½Π½Ρ‹Ρ…. Абстрактный класс Π² C++ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ Ρ‚Π°ΠΊΠΆΠ΅ отсутствуСт, Π½ΠΎ ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ любой класс с абстрактными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. (ΠžΡ‚ΡΡŽΠ΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ C++: ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 1 абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² абстрактном классС.) Π’Π°ΠΊΠΆΠ΅ Π² C++ ΠΌΠΎΠΆΠ½ΠΎ (нСпрямо) ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ абстрактный класс, Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ) ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Π’ C# интСрфСйсы ΠΈ абстрактныС классы встроСны Π² язык.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ (Π½Π° C#, ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ язык значСния Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚):

Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом. Π€ΠΎΡ‚ΠΎ Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ абстрактным классом ΠΈ интСрфСйсом

МнС каТСтся достаточно Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ вопрос ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ Ρ‚Π΅Π³ΠΎΠΌ Β«ΠΎΠΎΠΏΒ», Π½ΠΎ ΠΏΡ€ΠΈ этом Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… явно ΠΏΡ€ΠΎΡΠ°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ спСцифичСскиС аспСкты ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… языков программирования. Π― ΠΆΠ΅ ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ исходя ΠΈΠ· понятий ООП ΠΈ лишь ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠΎΠ±Ρ‰Π΅ это Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ появилось Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках программирования.

АбстрактныС классы ΠΈ интСрфСйсы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ наслСдованию, Ρ‚ΠΎΡ‡Π½Π΅Π΅ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΌΠΈΡ€Π°. Π‘ ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π²Π΅Ρ‰Π΅ΠΉ Π² нашСй систСмС Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π΅: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Ρ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ эту Π³Ρ€ΡƒΠΏΠΏΡƒ ΡˆΡ‚ΡƒΠΊΠΎΠ²ΠΈΠ½ ΠΎΡ‚ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ….

Допустим, для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² интСрфСйсС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± ООП, Ρ‚ΠΎ ΠΌΡ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΈΠΏ Кнопки с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅) ΠΈ скрытого состояния, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ опираСтся ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Π΄Π°, скрытого состояния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ). ΠŸΡ€ΠΈ этом ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ фиксированная опСрация, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ для всСх Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠ½ΠΎΠΏΠΎΠΊ.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ опСрация с ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Ρ‚.Π΅. опСрация, Ρ‡ΡŒΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠ½ΠΎΠΏΠΎΠΊ, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ).

ДСкларация ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±Π΅Π· ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Ρ‚.Π΅. опСрация, Ρ‡ΡŒΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° этом этапС Π½Π΅ извСстно Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ слишком сильно Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ).

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ‚ΠΈΠΏ Кнопки ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (non-virtual methods), Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (virtual methods) ΠΈ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (abstract methods).

НаличиС Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² являСтся ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ инструмСнтом модСлирования ΠΈ позволяСт вСсьма Ρ‚ΠΎΡ‡Π½ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒ намСрСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ «НаТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒΒ», которая Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ (ΠΈΠ»ΠΈ абстрактному ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ) Β«ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅Β», Π½ΠΎ ΠΏΡ€ΠΈ этом всСгда Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ (ΠΏΡ€ΠΎΠ·ΠΎΡ€Π»ΠΈΠ²Ρ‹ΠΉ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ Π² этом описании ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Β«Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Β»).

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. И Ρ‚ΡƒΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ вопросы. Π’ΠΎΡ‡Π½Π΅Π΅, вопросов Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Ρƒ Ρ‚ΠΈΠΏΠ° Π΅ΡΡ‚ΡŒ лишь ΠΎΠ΄ΠΈΠ½ нСпосрСдствСнный Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ всС Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ содСрТат лишь Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. НС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Β«ΠšΠ½ΠΎΠΏΠΊΡƒ мСню» ΠΎΡ‚ «Кнопки» ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«ΠΠ°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒΒ». Но Ρ‡Ρ‚ΠΎ, Ссли наш Ρ‚ΠΈΠΏ «Кнопка мСню» Π±ΡƒΠ΄Π΅Ρ‚ отнаслСдован ΠΎΡ‚ Π΄Π²ΡƒΡ… Ρ‚ΠΈΠΏΠΎΠ² с ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ? Как ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ лишь ΠΎΠ΄Π½Ρƒ, Π° ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ? А ΠΊΠ°ΠΊ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ? А Ρ‡Ρ‚ΠΎ Ссли Ρƒ Π΄Π²ΡƒΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ? А Ρ‡Ρ‚ΠΎ Ссли Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«ΠΠ°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒΒ» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½, Π° Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ – лишь описан Π² Π²ΠΈΠ΄Π΅ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ?

НСт, всС эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹, ΠΈ Π² Π‘++, ΠΈ Eiffel, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ довольно Π³ΠΈΠ±ΠΊΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½Π°Ρ€ΡƒΠΆΡƒ ΠΈ ΠΊΠ°ΠΊ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Но для Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языков программирования подобная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ показалась излишнСй, ΠΈ ΠΎΠ½ΠΈ пошли Π½Π° Ρ…ΠΈΡ‚Ρ€ΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡ‚Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат лишь Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ, ΠΈ Ρ‚Π°ΠΊ появились интСрфСйсы.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³ΠΊΠΎ провСсти Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ трСмя понятиями – интфСрфСйса, абстрактного Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ – описываСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сСмСйство Ρ‚ΠΈΠΏΠΎΠ² ΠΈ содСрТит лишь Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Π΄Π°, я осознанно ΠΏΠΈΡˆΡƒ слово «дСкларация», Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ слово Β«ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Β», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² ООП ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅).

Абстрактный Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс описываСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сСмСйство Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ ΠΏΠΎΠΌΠΈΠΌΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹) ΠΈ фиксированныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Π½Π΅Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹).

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ класс описываСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сСмСйство Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ для использования ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ. Π’Π°ΠΊΠΎΠΉ класс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ всС Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ фиксированными (Π½Π΅Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹) ΠΈΠ»ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹). Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Π²ΠΈΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… классов – Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹ΠΉ (sealed) класс – это Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ класса ΠΎΡ‚Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ лишь ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ интСрфСйсов Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния упрощСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языков программирования, Π½ΠΎ ΠΈ для выдСлСния Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, наслСдованиС классов ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ «ЯвляСтся» («Кнопка мСню» Π―Π’Π›Π―Π•Π’Π‘Π― «Кнопкой»), Π° Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТат ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», тСсно связанный с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ классы Π½Π΅ просто ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ Π³Ρ€ΡƒΠΏΠΏΡƒ Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π».

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΆΠ΅, ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ мСньшСй ΡΠ²ΡΠ·Π½ΠΎΡΡ‚ΡŒΡŽ (low coupling), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Тизнь класса-наслСдника. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ «ЯвляСтся» («Кнопка мСню» Π―Π’Π›Π―Π•Π’Π‘Π― Β«IКнопкой»), Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ТСсткоС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Β«ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€ΠΎΠ»ΡŒΒ» (CAN DO). НапримСр, интСрфСйс IEquatable ΠΈΠ· BCL опрСдСляСт Β«Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅Β» ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ возмоТности Ρ‚ΠΈΠΏΠΎΠ² ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ значСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

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

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

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