ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП) это мСтодология, основанная Π½Π° прСдставлСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°ΠΊ совокупности Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π•Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹: Абстракция (Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ), НаслСдованиС (ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π°), Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ (скрытиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ) ΠΈ ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (Π΅Π΄ΠΈΠ½Ρ‹ΠΉ интСрфСйс для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²). Π­Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π»Π΅ΠΆΠΈΡ‚ Π² основС соврСмСнных языков программирования.

ΠšΡ€Π°Ρ‚ΠΊΠΎ

  • Абстракция: выдСляСм Π³Π»Π°Π²Π½Ρ‹Π΅ характСристики ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ отбрасываСм нСсущСствСнныС.
  • НаслСдованиС: Π½ΠΎΠ²Ρ‹ΠΉ класс Π±Π΅Ρ€Π΅Ρ‚ поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ), это ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π°.
  • Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ: прячСм Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ класса ΠΈ Π΄Π°Π΅ΠΌ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.
  • ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ: с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс, Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ зависит ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.
  • Класс это шаблон (Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆ), Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ это экзСмпляр класса, созданный ΠΏΠΎ этому ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.
А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉ углубимся Π² Ρ‚Π΅ΠΌΡƒ ΠΈ рассмотрим простыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нас ΠΎΠΊΡ€ΡƒΠΆΠ°Π΅Ρ‚. Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ задумывался, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Java устроСна ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½Π° устроСна? Π’ Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ создаСшь классы, Π½Π° ΠΈΡ… основС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρƒ классов Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ‚.Π΄. Но ΠΏΠΎΡ‡Π΅ΠΌΡƒ структура языка Ρ‚Π°ΠΊΠΎΠ²Π°, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ состоят ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° Π½Π΅ ΠΈΠ· Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ? Π—Π°Ρ‡Π΅ΠΌ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ΠΎ понятиС Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Β» ΠΈ поставлСно Π²ΠΎ Π³Π»Π°Π²Ρƒ ΡƒΠ³Π»Π°? ВсС Π»ΠΈ языки устроСны Ρ‚Π°ΠΊ ΠΈ, Ссли Π½Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ прСимущСства это Π΄Π°Π΅Ρ‚ Java? Вопросов, ΠΊΠ°ΠΊ видишь, ΠΌΠ½ΠΎΠ³ΠΎ :) ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Π² сСгодняшнСй Π»Π΅ΠΊΡ†ΠΈΠΈ. Java являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java Π½ΡƒΠΆΠ½ΠΎ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ стиля. И ΡΡ‚ΠΈΠ»ΡŒ этот основан Π½Π° использовании Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ классов.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚?

ΠœΠΈΡ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΠΆΠΈΠ²Π΅ΠΌ, состоит ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Если ΠΌΡ‹ посмотрим Π²ΠΎΠΊΡ€ΡƒΠ³, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ нас ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‚ Π΄ΠΎΠΌΠ°, Π΄Π΅Ρ€Π΅Π²ΡŒΡ, Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ, мСбСль, посуда, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹. ВсС эти ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… характСристик, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. ΠœΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, ΠΈ ΠΌΡ‹ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ всСгда для Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ. НапримСр, Ссли Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ΅Ρ…Π°Ρ‚ΡŒ Π΄ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ, Ссли Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ΅ΡΡ‚ΡŒ, посудой, Π° Ссли ΠΎΡ‚Π΄ΠΎΡ…Π½ΡƒΡ‚ΡŒ, Π½Π°ΠΌ понадобится ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π΄ΠΈΠ²Π°Π½. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π² повсСднСвной ΠΆΠΈΠ·Π½ΠΈ. Π­Ρ‚ΠΎ послуТило ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ созданию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π°Π·Π²Π°Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½ΠΎΠ²ΡƒΡŽ модСль Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Π»Π°Π΄ΠΈΡ‚ΡŒ Π΅Π΅ сСрийноС производство. Как Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½, ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ (корпус, ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΠ½, Π΄ΠΈΠ½Π°ΠΌΠΈΠΊ, ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°, ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Ρ‚.Π΄.). ΠŸΡ€ΠΈ этом Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ эти Π΄Π΅Ρ‚Π°Π»ΠΈ. Однако Π²Ρ‹ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ Π»ΠΈΡ‡Π½ΠΎ, для этого Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ ΡˆΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ ΠΏΡ€ΠΈ производствС ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈΡΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡ… выпуск, Π²Π°ΠΌ понадобится ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆ Π² Π²ΠΈΠ΄Π΅ описания устройства Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°. Π’ ООП Ρ‚Π°ΠΊΠΎΠ΅ описаниС, Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆ, схСма ΠΈΠ»ΠΈ шаблон называСтся классом, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Класс это описаниС Π΅Ρ‰Π΅ Π½Π΅ созданного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠ°ΠΊ Π±Ρ‹ ΠΎΠ±Ρ‰ΠΈΠΉ шаблон, состоящий ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ конструктора, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ это экзСмпляр класса, созданный Π½Π° основС этого описания.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП)

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Java Π½Π΅ просто Ρ‚Π°ΠΊ состоит ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ классов. Π­Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΡ‚ΡŒ Π΅Π΅ создатСлСй, ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅. Π•ΡΡ‚ΡŒ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, Π² основС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π»Π΅ΠΆΠ°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚Π°ΠΊΠΎΠΉ язык назывался Simula, ΠΈ Π΅Π³ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π΅Π»ΠΈ Π΅Ρ‰Π΅ Π² 1960-Ρ… Π³ΠΎΠ΄Π°Ρ… Π² НорвСгии. Помимо всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Π² Simula появились понятия «класс» ΠΈ Β«ΠΌΠ΅Ρ‚ΠΎΠ΄Β». ΠšΡ€ΠΈΡΡ‚Π΅Π½ ΠΡŽΠ³ΠΎΡ€ ΠΈ ОлС-Π™ΠΎΡ…Π°Π½ Π”Π°Π»ΡŒ, создатСли языка Simula, Ρ€ΠΎΠ΄ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΈΠΊΠ° ООП
ΠšΡ€ΠΈΡΡ‚Π΅Π½ ΠΡŽΠ³ΠΎΡ€ ΠΈ ОлС Π™ΠΎΡ…Π°Π½ Π”Π°Π»ΡŒ - создатСли Simula
Казалось Π±Ρ‹, Simula это Π΄Ρ€Π΅Π²Π½ΠΈΠΉ язык ΠΏΠΎ ΠΌΠ΅Ρ€ΠΊΠ°ΠΌ программирования, Π½ΠΎ ΠΈΡ… Β«Ρ€ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽΒ» связь с Java Π²ΠΈΠ΄Π½ΠΎ Π½Π΅Π²ΠΎΠΎΡ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ Π³Π»Π°Π·ΠΎΠΌ. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, Ρ‚Ρ‹ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅ΡˆΡŒ написанный Π½Π° Π½Π΅ΠΌ ΠΊΠΎΠ΄ ΠΈ Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ… объяснишь, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ :)
Begin
  Class Rectangle (Width, Height); Real Width, Height;

   Begin
      Real Area, Perimeter;

      Procedure Update;
      Begin
        Area := Width * Height;
              OutText("Rectangle is updating, Area = "); OutFix(Area,2,8); OutImage;
        Perimeter := 2*(Width + Height);
              OutText("Rectangle is updating, Perimeter = "); OutFix(Perimeter,2,8); OutImage;
      End of Update;

      Update;
      OutText("Rectangle created: "); OutFix(Width,2,6);
      OutFix(Height,2,6); OutImage;
   End of Rectangle;

       Rectangle Class ColouredRectangle (Color); Text Color;

  Begin
      OutText("ColouredRectangle created, color = "); OutText(Color);
      OutImage;
        End of ColouredRectangle;


         Ref(Rectangle) Cr;
   Cr :- New ColouredRectangle(10, 20, "Green");
End;
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° взят ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ Simula - 50 Π»Π΅Ρ‚ ООП. Как видишь, Java ΠΈ Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΎΠΊ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° :) Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ появлСниС Simula ΠΎΠ·Π½Π°ΠΌΠ΅Π½ΠΎΠ²Π°Π»ΠΎ собой Ρ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. ВикипСдия Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ООП: ΠžΠ±ΡŠΠ΅ΜΠΊΡ‚Π½ΠΎ-ориСнти́рованноС программи́рованиС (ООП) это мСтодология программирования, основанная Π½Π° прСдставлСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π²ΠΈΠ΄Π΅ совокупности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся экзСмпляром ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса, Π° классы ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ наслСдования. Оно, Π½Π° ΠΌΠΎΠΉ взгляд, ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ΅. Π’Ρ‹ Π½Π΅Π΄Π°Π²Π½ΠΎ Π½Π°Ρ‡Π°Π» ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Java, Π½ΠΎ Π² Π½Π΅ΠΌ вряд Π»ΠΈ найдутся Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ Ρ‚Π΅Π±Π΅ слова:) БСгодня ООП это самая распространСнная мСтодология программирования. Помимо Java ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… популярных языках, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ»Ρ‹ΡˆΠ°Π». Π­Ρ‚ΠΎ C++ (Π΅Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€), Objective-C ΠΈ Swift (Π½Π° Π½ΠΈΡ… ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для устройств Apple), Python (Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ вострСбован Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ), PHP (ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых популярных языков Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ), JavaScript (ΠΏΡ€ΠΎΡ‰Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Π΅Π³ΠΎ Π½Π° Π½Π΅ΠΌ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚) ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. БобствСнно говоря, Ρ‡Ρ‚ΠΎ это Π·Π° Β«ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹Β» ООП? РасскаТСм ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП

Π­Ρ‚ΠΎ основа основ. 4 Π³Π»Π°Π²Π½Ρ‹Π΅ особСнности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вмСстС ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Π˜Ρ… ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ это ΠΊΠ»ΡŽΡ‡ ΠΊ ΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡŽ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ программиста. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП:
  1. Абстракция
  2. НаслСдованиС
  3. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ
  4. ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ
ΠšΡ€Π°Ρ‚ΠΊΠΎ всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ООП ΡƒΠ΄ΠΎΠ±Π½ΠΎ свСсти Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ:
ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ‘ΡƒΡ‚ΡŒΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ
ΠΠ±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡΠ²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π³Π»Π°Π²Π½ΠΎΠ΅, ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ второстСпСнноСу Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° Π³Π»Π°Π²Π½ΠΎΠ΅ это Π·Π²ΠΎΠ½ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²
НаслСдованиСновый класс Π±Π΅Ρ€Π΅Ρ‚ поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ родитСляSmartphone наслСдуСт CellPhone, Ρ‚ΠΎΡ‚ WirelessPhone, Ρ‚ΠΎΡ‚ AbstractPhone
Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π΄Π°Ρ‚ΡŒ доступ Ρ‡Π΅Ρ€Π΅Π· мСтодыполя year ΠΈ company ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹, Π½Π°Ρ€ΡƒΠΆΡƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ call() ΠΈ ring()
ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс, Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ°callAnotherUser(AbstractPhone) Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с любой модСлью Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°
Π§Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ООП: абстракция, наслСдованиС, инкапсуляция, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ 1. Абстракция

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ простой ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ. Абстракция ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Π»Π°Π²Π½Ρ‹Ρ…, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… характСристик ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, отбрасываниС второстСпСнных, Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…. НС Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ вСлосипСд ΠΈ вспомним ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· старой Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎ классы. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, ΠΌΡ‹ создаСм ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Β«Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΒ» ΠΌΡ‹ написали класс Employee. КакиС характСристики Π²Π°ΠΆΠ½Ρ‹ для ΠΈΡ… описания Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ? ЀИО, Π΄Π°Ρ‚Π° роТдСния, Π½ΠΎΠΌΠ΅Ρ€ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ страхования, ИНН. Но вряд Π»ΠΈ Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π΅Π³ΠΎ рост, Ρ†Π²Π΅Ρ‚ Π³Π»Π°Π· ΠΈ волос. Компании эта информация ΠΎ сотрудникС Π½ΠΈ ΠΊ Ρ‡Π΅ΠΌΡƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для класса Employee ΠΌΡ‹ Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ String name, int age, int socialInsuranceNumber ΠΈ int taxNumber, Π° ΠΎΡ‚ лишнСй для нас ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²Ρ€ΠΎΠ΄Π΅ Ρ†Π²Π΅Ρ‚Π° Π³Π»Π°Π· откаТСмся, абстрагируСмся. А Π²ΠΎΡ‚ Ссли ΠΌΡ‹ создаСм ΠΊΠ°Ρ€Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ Ρ„ΠΎΡ‚ΠΎΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ для агСнтства, ситуация Ρ€Π΅Π·ΠΊΠΎ мСняСтся. Для описания Ρ„ΠΎΡ‚ΠΎΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π°ΠΌ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ рост, Ρ†Π²Π΅Ρ‚ Π³Π»Π°Π· ΠΈ Ρ†Π²Π΅Ρ‚ волос, Π° Π½ΠΎΠΌΠ΅Ρ€ ИНН Π½Π΅ Π½ΡƒΠΆΠ΅Π½. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² классС Model ΠΌΡ‹ создаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ String height, String hair, String eyes.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ абстракции с ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²β˜ŽοΈ

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ этого срСдства связи ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 100 Π»Π΅Ρ‚ ΠΈ соврСмСнный Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ своСго ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠ° ΠΈΠ· 19 Π²Π΅ΠΊΠ°, прСдставляСт собой ΠΊΡƒΠ΄Π° Π±ΠΎΠ»Π΅Π΅ слоТноС устройство. Когда ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠΌ, Ρ‚ΠΎ Π½Π΅ задумываСмся ΠΎ Π΅Π³ΠΎ устройствС ΠΈ процСссах, происходящих Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ. ΠœΡ‹ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, прСдоставлСнныС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°: ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ сСнсорный экран для Π²Ρ‹Π±ΠΎΡ€Π° Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Одним ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… интСрфСйсов Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° Π±Ρ‹Π»Π° рукоятка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ². РазумССтся, это Π±Ρ‹Π»ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ€ΡƒΠΊΠΎΡΡ‚ΡŒ исправно выполняла. Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° самый соврСмСнный ΠΈ Π½Π° самый ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½, ΠΌΠΎΠΆΠ½ΠΎ сразу Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ самыС Π²Π°ΠΆΠ½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹ ΠΈ для устройства ΠΊΠΎΠ½Ρ†Π° 19-Π³ΠΎ Π²Π΅ΠΊΠ°, ΠΈ для супСрсоврСмСнного смартфона. Π­Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Π° (Π½Π°Π±ΠΎΡ€ Π½ΠΎΠΌΠ΅Ρ€Π°) ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π°. По сути это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠΌ, Π° Π½Π΅ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. БСйчас ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π² ООП: Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… характСристик ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ООП называСтся абстракциСй. ΠΠ±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ Π² ООП ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ способ прСдставлСния элСмСнтов Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Абстракция всСгда связана с ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ свойствах ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², поэтому Π³Π»Π°Π²Π½ΠΎΠ΅ это ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠΉ Π² контСкстС Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠŸΡ€ΠΈ этом ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ абстракции ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ абстракции ΠΊ нашим Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°ΠΌ. Для Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС Ρ‚ΠΈΠΏΡ‹ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΎΡ‚ самых ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΈ Π΄ΠΎ Π½Π°ΡˆΠΈΡ… Π΄Π½Π΅ΠΉ. НапримСр, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½Π° рисункС. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΎΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π΄ΠΎ смартфона: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ абстракции ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡΠ’Π΅ΠΏΠ΅Ρ€ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ абстракции ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² этой ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ: ΠΎΠ±Ρ‰ΠΈΠΉ абстрактный Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½), ΠΎΠ±Ρ‰ΡƒΡŽ характСристику (Π³ΠΎΠ΄ Π΅Π³ΠΎ создания) ΠΈ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс: всС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ способны ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит Π½Π° Java:
public abstract class AbstractPhone {
    private int year;

    public AbstractPhone(int year) {
        this.year = year;
    }
    public abstract void call(int outputNumber);
    public abstract void ring (int inputNumber);
}
На основании этого абстрактного класса ΠΌΡ‹ смоТСм ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² с использованиСм Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ рассмотрим Π½ΠΈΠΆΠ΅.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ 2. НаслСдованиС

Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ: с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΠ· ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП Ρ‚Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌ! :) НаслСдованиС Π½Π°ΠΌ ΡƒΠΆΠ΅ ΠΏΠ°Ρ€Ρƒ Ρ€Π°Π· Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΎΡΡŒ Π² лСкциях, ΠΈ ΠΌΡ‹ успСли с Π½ΠΈΠΌ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. НаслСдованиС это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ класс Π½Π° основС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ). ΠŸΡ€ΠΈ этом свойства ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Π·Π°ΠΈΠΌΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹ΠΌ классом. Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ наслСдованиС ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ прСимущСства ΠΎΠ½ΠΎ Π΄Π°Π΅Ρ‚? ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго это ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π°. Поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, описанныС Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классах, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² классах-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ…. Если Ρƒ всСх Ρ‚ΠΈΠΏΠΎΠ² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ Π΅ΡΡ‚ΡŒ 10 ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ ΠΈ 5 ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‚Π΅Π±Π΅ достаточно вынСсти ΠΈΡ… Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс Auto. Π’Ρ‹ смоТСшь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² классах-ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ… Π±Π΅Π·ΠΎ всяких ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π‘ΠΏΠ»ΠΎΡˆΠ½Ρ‹Π΅ ΠΏΠ»ΡŽΡΡ‹: ΠΈ количСствСнно (мСньшС ΠΊΠΎΠ΄Π°), ΠΈ, ΠΊΠ°ΠΊ слСдствиС, качСствСнно (классы становятся Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅). ΠŸΡ€ΠΈ этом ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ наслСдования ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΈΠΉ, ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΡƒΡŽ Π² ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Ρ‹ моТСшь Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ (ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ спСцифичСскиС для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ класса поля ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅). Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ: всС ΠΌΡ‹ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Π½Π°ΡˆΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, Π° Ρ‡Π΅ΠΌ-Ρ‚ΠΎ отличаСмся ΠΎΡ‚ Π½ΠΈΡ… :)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ наслСдования с ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²β˜ŽοΈ

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π΅Ρ‰Π΅ Ρ€Π°Π· Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ². МоТно Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° прСдставляСт собой ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ модСль, располоТСнная Π½ΠΈΠΆΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСми ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, располоТСнных Π²Ρ‹ΡˆΠ΅ ΠΏΠΎ Π²Π΅Ρ‚ΠΊΠ΅, плюс своими собствСнными. НапримСр, смартфон, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΎΡ‚ΠΎΠ²ΡƒΡŽ ΡΠ΅Ρ‚ΡŒ для связи (ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ свойствами сотового Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°), являСтся бСспроводным ΠΈ пСрСносным (ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ свойствами бСспроводного Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°) ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ (свойствами Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°). Π’ этом случаС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ наслСдовании свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ наслСдованиС Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² использовании ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… классов для описания Π½ΠΎΠ²Ρ‹Ρ…. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания класса смартфон с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ наслСдования. ВсС бСспроводныС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‚ аккумуляторных Π±Π°Ρ‚Π°Ρ€Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ рСсурс Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² часах. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ это свойство Π² класс бСспроводных Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²:
public abstract class WirelessPhone extends AbstractPhone {

    private int hour;

    public WirelessPhone(int year, int hour) {
        super(year);
        this.hour = hour;
    }
    }
Π‘ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ свойства бСспроводного Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² этот класс Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² call ΠΈ ring:
public class CellPhone extends WirelessPhone {
    public CellPhone(int year, int hour) {
        super(year, hour);
    }

    @Override
    public void call(int outputNumber) {
        System.out.println("Π’Ρ‹Π·Ρ‹Π²Π°ΡŽ Π½ΠΎΠΌΠ΅Ρ€ " + outputNumber);
    }

    @Override
    public void ring(int inputNumber) {
        System.out.println("Π’Π°ΠΌ Π·Π²ΠΎΠ½ΠΈΡ‚ Π°Π±ΠΎΠ½Π΅Π½Ρ‚ " + inputNumber);
    }
}
И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, класс смартфон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ классичСских сотовых Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму. Π’ смартфон ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой, Ρ€Π°ΡΡˆΠΈΡ€ΡΡ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ΄Π° класс ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:
public class Smartphone extends CellPhone {

    private String operationSystem;

    public Smartphone(int year, int hour, String operationSystem) {
        super(year, hour);
        this.operationSystem = operationSystem;
    }
public void install(String program){
    System.out.println("Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽ " + program + "для" + operationSystem);
}

}
Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, для описания класса Smartphone ΠΌΡ‹ создали совсСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ класс с Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. ИспользованиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° наслСдования ООП позволяСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ объСм ΠΊΠΎΠ΄Π°, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ программисту.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ 3. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ

Π‘ Π½ΠΈΠΌ ΠΌΡ‹ ΡƒΠΆΠ΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Π² Java ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ возмоТностям ΠΈΡ… измСнСния. Как видишь, Π² Π΅Π³ΠΎ основС Π»Π΅ΠΆΠΈΡ‚ слово «капсула». Π’ эту «капсулу» ΠΌΡ‹ прячСм ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π²Π°ΠΆΠ½Ρ‹Π΅ для нас Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ мСнял. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ. Π£ тСбя Π΅ΡΡ‚ΡŒ имя ΠΈ фамилия. Π˜Ρ… Π·Π½Π°ΡŽΡ‚ всС Ρ‚Π²ΠΎΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅. Но Ρƒ Π½ΠΈΡ… Π½Π΅Ρ‚ доступа ΠΊ измСнСнию Ρ‚Π²ΠΎΠ΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ. Π­Ρ‚ΠΎΡ‚ процСсс, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, «инкапсулирован» Π² паспортном столС: ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ имя Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΌ, ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это моТСшь Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ‹. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Β«ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈΒ» ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ Ρ‚Π²ΠΎΠ΅ΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ Β«Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅Β» :) Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, дСньги Π² Ρ‚Π²ΠΎΠ΅ΠΉ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π΅. ΠžΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Π½Π° Π²ΠΈΠ΄Ρƒ посрСди ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹ Π½Π΅ Π»ΡƒΡ‡ΡˆΠ°Ρ идСя. Π›ΡŽΠ±ΠΎΠΉ Β«ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΒ» (Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠΉ ΠΊ Ρ‚Π΅Π±Π΅ Π΄ΠΎΠΌΠΎΠΉ) смоТСт ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ число Ρ‚Π²ΠΎΠΈΡ… Π΄Π΅Π½Π΅Π³, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ ΠΈΡ…. Π›ΡƒΡ‡ΡˆΠ΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² сСйфС. Доступ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ тСбя ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ инкапсуляции, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ‚Ρ‹ ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π», это ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа (private, public ΠΈ Ρ‚.Π΄.), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹-сСттСры. Если ΠΏΠΎΠ»Π΅ age Ρƒ класса Cat Π½Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΡ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ смоТСт Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:
Cat.age = -1000;
А ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ инкапсуляции позволяСт Π½Π°ΠΌ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ age ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°-сСттСра, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ возраст Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ инкапсуляции с ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²β˜ŽοΈ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ абстракции ΠΌΡ‹ выдСляСм ΠΎΠ±Ρ‰Π΅Π΅ для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Однако каТдая модСль Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Π° ΠΈ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…. Как ΠΆΠ΅ Π½Π°ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ провСсти Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ эту ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ? Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ± Π½ΠΈΠΊΡ‚ΠΎ ΠΈΠ· ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ случайно ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Π½Π΅ смог ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ наш Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½, ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ модСль Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ? Для ΠΌΠΈΡ€Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½: Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ всС Π΄Π΅Ρ‚Π°Π»ΠΈ Π² корпус Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°. Π’Π΅Π΄ΡŒ Ссли этого Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ всС внутрСнности Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠ΅ ΠΈΡ… снаруТи, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ найдСтся Π»ΡŽΠ±ΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ экспСримСнтатор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ "ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ" Ρ€Π°Π±ΠΎΡ‚Ρƒ нашСго Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°. Для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ООП ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ инкапсуляции, Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ООП, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ классС, внутрСнняя рСализация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° скрываСтся ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ прСдоставляСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ интСрфСйс. Π—Π°Π΄Π°Ρ‡Π° программиста ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ доступны для ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ доступа, Π° ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ нСдоступны для ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ доступом

Допустим, ΠΏΡ€ΠΈ производствС Π½Π° Ρ‚Ρ‹Π»ΡŒΠ½ΠΎΠΉ сторонС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° гравируСтся информация ΠΎ Π½Π΅ΠΌ: Π³ΠΎΠ΄ Π΅Π³ΠΎ выпуска ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ производитСля. Π­Ρ‚Π° информация Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½ΡƒΡŽ модСль, Π΅Π΅ состояниС. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° позаботился ΠΎ нСизмСнности этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: вряд Π»ΠΈ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π³Ρ€Π°Π²ΠΈΡ€ΠΎΠ²ΠΊΡƒ. Π’ ΠΌΠΈΡ€Π΅ Java состояниС Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² описываСтся Π² классС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»Π΅ΠΉ, Π° ΠΈΡ… ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΆΠ΅ измСнСния состояния ΠΈ повСдСния осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² доступа ΠΊ полям ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ: private, protected, public, Π° Ρ‚Π°ΠΊΠΆΠ΅ default (доступ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). НапримСр, ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ΄ создания, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ производитСля Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² относятся ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‚ измСнСнию Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ΄Π° класс ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:
public class SomePhone {

    private int year;
    private String company;
    public SomePhone(int year, String company) {
        this.year = year;
        this.company = company;
    }
private void openConnection(){
    //findComutator
    //openNewConnection...
}
public void call() {
    openConnection();
    System.out.println("Π’Ρ‹Π·Ρ‹Π²Π°ΡŽ Π½ΠΎΠΌΠ΅Ρ€");
}

public void ring() {
    System.out.println("Π”Π·Ρ‹Π½ΡŒ-Π΄Π·Ρ‹Π½ΡŒ");
}

 }
ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ private Π΄Π΅Π»Π°Π΅Ρ‚ доступными поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ private полям ΠΈΠ·Π²Π½Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π½Π΅Ρ‚ возмоТности Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ private ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ доступа ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ openConnection, оставляСт Π½Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊ свободному измСнСнию Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с нашим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΌΡ‹ оставляСм ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ call ΠΈ ring с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° public. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° инкапсуляции, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ссли ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΎΠ½ станСт бСсполСзным.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ 4. ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с нСсколькими Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ‚Π°ΠΊ, Π±ΡƒΠ΄Ρ‚ΠΎ это ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ. ΠŸΡ€ΠΈ этом ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹ΠΌ Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚. Π—Π²ΡƒΡ‡ΠΈΡ‚ слоТновато? БСйчас разбСрСмся. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ самый простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ…. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ класс Animal с СдинствСнным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ voice() ΠΈ Π΄Π²ΡƒΡ… Π΅Π³ΠΎ наслСдников, Cat ΠΈ Dog.
public class Animal {

   public void voice() {

       System.out.println("Голос!");
   }
}

public class Dog extends Animal {


   @Override
   public void voice() {
       System.out.println("Π“Π°Π²-Π³Π°Π²!");
   }
}

public class Cat extends Animal {

   @Override
   public void voice() {
       System.out.println("ΠœΡΡƒ!");
   }
}
Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ссылку Animal ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Dog.
public class Main {

   public static void main(String[] args) {

       Animal dog = new Dog();
       dog.voice();
   }
}
Как Ρ‚Ρ‹ Π΄ΡƒΠΌΠ°Π΅ΡˆΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½? Animal.voice() ΠΈΠ»ΠΈ Dog.voice()? Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса Dog: Π“Π°Π²-Π³Π°Π²! ΠœΡ‹ создали ссылку Animal, Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΊΠ°ΠΊ Dog. ΠŸΡ€ΠΈ нСобходимости ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ вСсти сСбя ΠΊΠ°ΠΊ кошка, лошадь ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅. Π“Π»Π°Π²Π½ΠΎΠ΅ это ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ссылкС ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° Animal ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ класса-наслСдника. Π­Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, вСдь всС собаки ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹ΠΌΠΈ. ИмСнно это ΠΌΡ‹ ΠΈΠΌΠ΅Π»ΠΈ Π² Π²ΠΈΠ΄Ρƒ, ΠΊΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Β«ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹ΠΌ, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚Β». Если Π±Ρ‹ ΠΌΡ‹ создали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Cat:
public static void main(String[] args) {

   Animal cat = new Cat();
   cat.voice();
}
ΠΌΠ΅Ρ‚ΠΎΠ΄ voice() Π²Ρ‹Π²Π΅Π» Π±Ρ‹ Β«ΠœΡΡƒ!Β». А Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Β«Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с нСсколькими Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ это ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏΒ»? Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ довольно Π»Π΅Π³ΠΊΠΎ. Π”Π°Π²Π°ΠΉΡ‚Π΅ прСдставим, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ создаСм ΠΏΠ°Ρ€ΠΈΠΊΠΌΠ°Ρ…Π΅Ρ€ΡΠΊΡƒΡŽ для ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ…. Π’ нашСй парикмахСрской Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ΅Ρ‚ΡŒ ΡΡ‚Ρ€ΠΈΡ‡ΡŒ всСх ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ…, поэтому ΠΌΡ‹ создадим ΠΌΠ΅Ρ‚ΠΎΠ΄ shear() (Β«ΠΏΠΎΡΡ‚Ρ€ΠΈΡ‡ΡŒΒ») с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Animal, ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‚Ρ€ΠΈΡ‡ΡŒ.
public class AnimalBarbershop {

   public void shear(Animal animal) {

       System.out.println("Π‘Ρ‚Ρ€ΠΈΠΆΠΊΠ° Π³ΠΎΡ‚ΠΎΠ²Π°!");
   }
}
И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ shear ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Cat, ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Dog!
public static void main(String[] args) {

   Cat cat = new Cat();
   Dog dog = new Dog();

   AnimalBarbershop barbershop = new AnimalBarbershop();

   barbershop.shear(cat);
   barbershop.shear(dog);
}
Π’ΠΎΡ‚ ΠΈ наглядный ΠΏΡ€ΠΈΠΌΠ΅Ρ€: класс AnimalBarbershop Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Cat ΠΈ Dog Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ это ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ. ΠŸΡ€ΠΈ этом Ρƒ Cat ΠΈ Dog Ρ€Π°Π·Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: ΠΎΠ½ΠΈ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΠΏΠΎΠ΄Π°ΡŽΡ‚ голос.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° с ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²β˜ŽοΈ

Если ΠΌΡ‹ посмотрим Π½Π° всС ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ², Ρ‚ΠΎ, нСсмотря Π½Π° различия Π²ΠΎ внСшнСм ΠΎΠ±Π»ΠΈΠΊΠ΅ ΠΈ устройствС ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρƒ Π½ΠΈΡ… Π½Π΅ΠΊΠΎΠ΅ ΠΎΠ±Ρ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: всС ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ Π·Π²ΠΎΠ½ΠΊΠΈ ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ достаточно понятный ΠΈ простой Π½Π°Π±ΠΎΡ€ ΠΊΠ½ΠΎΠΏΠΎΠΊ управлСния. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ извСстный Π½Π°ΠΌ ΡƒΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… программирования ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ модСлями, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ управлСния (мСханичСскиС ΠΈΠ»ΠΈ сСнсорныС), Π½Π΅ вдаваясь Π² тСхничСскиС тонкости устройства. Π’Π°ΠΊ, Π²Ρ‹ постоянно ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ сотовым Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠΌ, ΠΈ Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° смоТСтС ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π·Π²ΠΎΠ½ΠΎΠΊ с Π΅Π³ΠΎ стационарного собрата. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π² ООП, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ интСрфСйсом Π±Π΅Π· ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ устройствС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, называСтся ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ. Π”Π°Π²Π°ΠΉΡ‚Π΅ прСдставим, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π»ΡŽΠ±Ρ‹ΠΌΠΈ модСлями Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:
public class User {
    private String name;

    public User(String name) {
        this.name = name;
            }

    public void callAnotherUser(int number, AbstractPhone phone){
// Π²ΠΎΡ‚ ΠΎΠ½ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ - использованиС Π² ΠΊΠΎΠ΄Π΅ абстрактного Ρ‚ΠΈΠΏΠ° AbstractPhone phone!
        phone.call(number);
    }
}
 }
Π’Π΅ΠΏΠ΅Ρ€ΡŒ опишСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ². Одна ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²:
public class ThomasEdisonPhone extends AbstractPhone {

public ThomasEdisonPhone(int year) {
    super(year);
}
    @Override
    public void call(int outputNumber) {
        System.out.println("Π’Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Ρ€ΡƒΡ‡ΠΊΡƒ");
        System.out.println("Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π°, сэр");
    }

    @Override
    public void ring(int inputNumber) {
        System.out.println("Π’Π΅Π»Π΅Ρ„ΠΎΠ½ Π·Π²ΠΎΠ½ΠΈΡ‚");
    }
}
ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ стационарный Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½:
public class Phone extends AbstractPhone {

    public Phone(int year) {
        super(year);
    }

    @Override
    public void call(int outputNumber) {
        System.out.println("Π’Ρ‹Π·Ρ‹Π²Π°ΡŽ Π½ΠΎΠΌΠ΅Ρ€" + outputNumber);
    }

    @Override
    public void ring(int inputNumber) {
        System.out.println("Π’Π΅Π»Π΅Ρ„ΠΎΠ½ Π·Π²ΠΎΠ½ΠΈΡ‚");
    }
}
И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΊΡ€ΡƒΡ‚ΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΡ‚Π΅Π»Π΅Ρ„ΠΎΠ½:
public class VideoPhone extends AbstractPhone {

    public VideoPhone(int year) {
        super(year);
    }
    @Override
    public void call(int outputNumber) {
        System.out.println("ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Π½Π°Π» для Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π° " + outputNumber );
    }
    @Override
    public void ring(int inputNumber) {
        System.out.println("Π£ вас входящий Π²ΠΈΠ΄Π΅ΠΎΠ²Ρ‹Π·ΠΎΠ²..." + inputNumber);
    }
  }
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ main() ΠΈ протСстируСм ΠΌΠ΅Ρ‚ΠΎΠ΄ callAnotherUser:
AbstractPhone firstPhone = new ThomasEdisonPhone(1879);
AbstractPhone phone = new Phone(1984);
AbstractPhone videoPhone=new VideoPhone(2018);
User user = new User("АндрСй");
user.callAnotherUser(224466,firstPhone);
// Π’Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Ρ€ΡƒΡ‡ΠΊΡƒ
//Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π°, сэр
user.callAnotherUser(224466,phone);
//Π’Ρ‹Π·Ρ‹Π²Π°ΡŽ Π½ΠΎΠΌΠ΅Ρ€ 224466
user.callAnotherUser(224466,videoPhone);
//ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Π½Π°Π» для Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π° 224466
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹Π·ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° user, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° call Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° callAnotherUser производился динамичСски Π½Π° основании ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² процСссС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ этом ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ основноС прСимущСство ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°: Π²Ρ‹Π±ΠΎΡ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² процСссС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ появлСния ООП

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° эта новая концСпция программирования, ООП? Π£ программистов Π±Ρ‹Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ инструмСнты: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Π΅ языки. Π§Ρ‚ΠΎ ΠΆΠ΅ ΠΏΠΎΠ±ΡƒΠ΄ΠΈΠ»ΠΎ ΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²ΠΎΠ΅? ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, услоТнСниС Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌΠΈ стояли. Если 60 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π·Π°Π΄Π°Ρ‡Π° программиста выглядСла ΠΊΠ°ΠΊ Β«Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ матСматичСскоС ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ΅-Ρ‚ΠΎΒ», сСйчас ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π²ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Β«Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ 7 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†ΠΎΠ²ΠΎΠΊ для ΠΈΠ³Ρ€Ρ‹ S.T.A.L.K.E.R. Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Ρ… A, B, C , D, E, F ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ этих Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉΒ». Π—Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠ°ΠΊ видишь, Π·Π° ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠ΅ дСсятилСтия явно ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΠ»ΠΈΡΡŒ. А Π·Π½Π°Ρ‡ΠΈΡ‚, ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΠ»ΠΈΡΡŒ ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° возникновСния ООП. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ², Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΡƒΡ‚ Π½Π΅ Π½Π°Π΄ΠΎ. А Π²ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡Ρƒ с ΠΊΠΎΠ½Ρ†ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈΠ³Ρ€Ρ‹ слоТно Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°ΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ±ΠΎΠΉ ΠΆΠ΅ классов. Но ΠΏΡ€ΠΈ этом ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π΅ Π² классах ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… достаточно Π»Π΅Π³ΠΊΠΎ: Π½Π°ΠΌ явно Π±ΡƒΠ΄Π΅Ρ‚ Π½ΡƒΠΆΠ΅Π½ класс Π˜Π³Ρ€Π°, класс Π‘Ρ‚Π°Π»ΠΊΠ΅Ρ€, класс ΠšΠΎΠ½Ρ†ΠΎΠ²ΠΊΠ°, класс Π Π΅ΡˆΠ΅Π½ΠΈΠ΅Π˜Π³Ρ€ΠΎΠΊΠ°, класс Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉΠœΠΎΠΌΠ΅Π½Ρ‚ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Π½Π΅ приступив ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΌΡ‹ Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ «наброски» Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. УслоТнСниС Π·Π°Π΄Π°Ρ‡ поставило программистов ΠΏΠ΅Ρ€Π΅Π΄ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° части. Но Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π±Ρ‹Π»ΠΎ Π½Π΅ Ρ‚Π°ΠΊ просто. И ΠΎΡ‡Π΅Π½ΡŒ часто ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдставляла собой Β«Π΄Π΅Ρ€Π΅Π²ΠΎΒ» ΠΈΠ· ΠΊΡƒΡ‡ΠΈ Π²Π΅Ρ‚ΠΎΠΊ со всСми Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ зависимости ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ условий, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡŒ ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅. Для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±Ρ‹Π» ΡƒΠ΄ΠΎΠ±Π΅Π½, Π½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° части ΠΎΠ±ΡŠΠ΅ΠΌΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π±Ρ‹Π»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ слоТно. Π­Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ стала Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ возникновСния ООП. Π­Ρ‚Π° концСпция прСдоставила программистам Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΠΊΡƒΡ‡Ρƒ Β«ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉΒ»-классов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π΅Π»Π°Π΅Ρ‚ свою Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹. ВсС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, взаимодСйствуя ΠΌΠ΅ΠΆΠ΄Ρƒ собой, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, написанный Π½Π°ΠΌΠΈ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ экономит большоС количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ ΠΈΡ‚ΠΎΠ³Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚ΠΈΠ»ΡŒ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ соотвСтствовал ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ООП ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ ООП слСдуйтС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ совСтам:
  • выдСляйтС Π³Π»Π°Π²Π½Ρ‹Π΅ характСристики ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°;
  • выдСляйтС ΠΎΠ±Ρ‰ΠΈΠ΅ свойства ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ наслСдованиС ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²;
  • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ абстрактныС Ρ‚ΠΈΠΏΡ‹ для описания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²;
  • ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ всСгда ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ поля, относящиСся ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса.
ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ описаниС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ООП Π΅ΡΡ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Oracle (Object-Oriented Programming Concepts).

Вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ООП?

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ это ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° строится ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ это экзСмпляр класса, Π° классы ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ наслСдования.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ абстракция Π² ООП?

Π­Ρ‚ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Π»Π°Π²Π½Ρ‹Ρ…, Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… характСристик ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ отбрасываниС второстСпСнных. НапримСр, для класса Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° Π²Π°ΠΆΠ½Ρ‹ имя ΠΈ ИНН, Π½ΠΎ Π½Π΅ Ρ†Π²Π΅Ρ‚ Π³Π»Π°Π·.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ наслСдованиС?

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½ΠΎΠ²Ρ‹ΠΉ класс Π±Π΅Ρ€Π΅Ρ‚ поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ свои. Π­Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция?

Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. Поля Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ private, Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ (public) ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ?

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс. Один ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π§Π΅ΠΌ класс отличаСтся ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°?

Класс это описаниС, шаблон (поля, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, конструктор). ΠžΠ±ΡŠΠ΅ΠΊΡ‚ это ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ экзСмпляр, созданный ΠΏΠΎ этому ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅