экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании

ООП с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ (Ρ‡Π°ΡΡ‚ΡŒ 2)

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

Для этого я постарался Π½Π° Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΆΠΈΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ понятия ООП (класс, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, интСрфСйс, абстракция, инкапсуляция, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ).

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ посвящСна классам, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΈ интСрфСйсам.
Вторая Ρ‡Π°ΡΡ‚ΡŒ, прСдставлСнная Π½ΠΈΠΆΠ΅, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΈ наслСдованиС

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ Π½Π° ΠΌΠΈΠ½ΡƒΡ‚ΠΊΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ оказались Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΠΎΠ·Π°ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ°, ΠΊΠΎΠ³Π΄Π° Π“Π΅Π½Ρ€ΠΈ Π€ΠΎΡ€Π΄ Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠΉ властСй ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ эти коптящиС монстры Π·Π°Π³Ρ€ΡΠ·Π½ΡΡŽΡ‚ Π²ΠΎΠ·Π΄ΡƒΡ… ΠΈ ΠΏΡƒΠ³Π°ΡŽΡ‚ лошадСй. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ для управлСния ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€ΠΎΠ²Ρ‹ΠΌ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Π»ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ устроСн ΠΏΠ°Ρ€ΠΎΠ²ΠΎΠΉ ΠΊΠΎΡ‚Ρ‘Π», постоянно ΠΏΠΎΠ΄Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΡƒΠ³ΠΎΠ»ΡŒ, ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€ΠΎΠΉ, ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π²ΠΎΠ΄Ρ‹. ΠŸΡ€ΠΈ этом для ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° колёс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Ρ€Ρ‹Ρ‡Π°Π³Π°, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ колСсо Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π”ΡƒΠΌΠ°ΡŽ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ³Π»Π°ΡΠΈΡ‚ΡŒΡΡ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ автомобиля Ρ‚ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±Ρ‹Π»ΠΎ вСсьма Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΌ занятиСм.

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

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ – это свойство систСмы, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Π½ΠΈΠΌΠΈ, Π² классС ΠΈ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ
Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Π½Π΅Ρ€Π°Π·Ρ€Ρ‹Π²Π½ΠΎ связана с понятиСм интСрфСйса класса. По сути, всё Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² интСрфСйс, инкапсулируСтся Π² классС.

Абстракция

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Π΅Π΄Π΅Ρ‚ Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ ΠΏΠΎ ΠΎΠΆΠΈΠ²Π»Ρ‘Π½Π½ΠΎΠΌΡƒ участку двиТСния. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎ химичСском составС краски автомобиля, особСнностях взаимодСйствия ΡˆΠ΅ΡΡ‚Π΅Ρ€Ρ‘Π½ Π² ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ ΠΈΠ»ΠΈ влияния Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊΡƒΠ·ΠΎΠ²Π° Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ (Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ, Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ стоит Π² Π³Π»ΡƒΡ…ΠΎΠΉ ΠΏΡ€ΠΎΠ±ΠΊΠ΅ ΠΈ Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅Ρ‡Π΅ΠΌ Π·Π°Π½ΡΡ‚ΡŒΡΡ). Однако, Ρ€ΡƒΠ»ΡŒ, ΠΏΠ΅Π΄Π°Π»ΠΈ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° (Π½Ρƒ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠ΅ΠΏΠ΅Π»ΡŒΠ½ΠΈΡ†Ρƒ) ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярно.

АбстрагированиС – это способ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… характСристик ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠ· рассмотрСния Π½Π΅Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅. БоотвСтствСнно, абстракция – это Π½Π°Π±ΠΎΡ€ всСх Ρ‚Π°ΠΊΠΈΡ… характСристик.

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

Π›ΡŽΠ±ΠΎΠ΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ воТдСнию Π½Π΅ ΠΈΠΌΠ΅Π»ΠΎ Π±Ρ‹ смысла, Ссли Π±Ρ‹ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π½Π°ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Π²ΠΎΠ΄ΠΈΡ‚ΡŒ, скаТСм, ВАЗ 2106 Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΡ‚ΠΎΠΌ Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ВАЗ 2110 ΠΈΠ»ΠΈ BMW X3. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смог Π±Ρ‹ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ пСдаль Π³Π°Π·Π° находится Π»Π΅Π²Π΅Π΅ ΠΏΠ΅Π΄Π°Π»ΠΈ Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π°, Π° вмСсто руля – дТойстик.

Всё Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ основныС элСмСнты управлСния автомобиля ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ дСйствия. Π’ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π°Π»Π΅Π²ΠΎ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€ΡƒΠ»ΡŒ, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΌ Π³ΠΈΠ΄Ρ€ΠΎΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.
Если Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ Π½Π°Π΄ΠΎ Π΄ΠΎΠ΅Ρ…Π°Ρ‚ΡŒ с Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄ΠΎ Π΄ΠΎΠΌΠ°, Ρ‚ΠΎ ΠΎΠ½ сядСт Π·Π° Ρ€ΡƒΠ»ΡŒ автомобиля ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ дСйствия, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΈΠΏ автомобиля ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚. По сути, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ интСрфСйс, Π° Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡΡΡŒ ΠΎΡ‚ сущности автомобиля, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ с этим интСрфСйсом. Если Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ прСдстоит Π΅Ρ…Π°Ρ‚ΡŒ ΠΏΠΎ Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΎΠΌΡƒ Π°Π²Ρ‚ΠΎΠ±Π°Π½Ρƒ, ΠΎΠ½, вСроятно Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ быстрый Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ с Π½ΠΈΠ·ΠΊΠΎΠΉ посадкой, Π° Ссли прСдстоит Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ· ΠΎΡ‚Π΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°Ρ€Π°Π»ΡŒΠ½ΠΈΠΊΠ° Π² Π“ΠΎΡ€Π½ΠΎΠΌ АлтаС послС доТдя, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½ УАЗ с армСйскими мостами. Но, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, интСрфСйс останСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ – это свойство систСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ интСрфСйсом Π±Π΅Π· ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структурС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

НапримСр, Ссли Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π² классС, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ: byte[] readBytes( int n );
ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· сокСта. Π’ классС, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΌ сокСт, Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ readBytes. Достаточно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² вашСй систСмС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ достигнут.

ΠŸΡ€ΠΈ этом Π»ΠΎΠ³ΠΈΠΊΠ° систСмы ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΏΠΎ сСти. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ абстрагируСмся ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ спСциализации получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ интСрфСйса. ЕдинствСнноС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ этом – Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π» ΠΌΠ΅Ρ‚ΠΎΠ΄ readBytes.

НаслСдованиС

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбя, Π½Π° ΠΌΠΈΠ½ΡƒΡ‚Ρƒ, ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌΠΈ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Π²ΠΎΠ΄Π°. НашСй Π·Π°Π΄Π°Ρ‡Π΅ΠΉ являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° соврСмСнного автомобиля. Π£ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ прСдыдущая модСль, которая ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Π·Π°Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»Π° сСбя Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠ»Π΅Ρ‚Π½Π΅Π³ΠΎ использования. Всё Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π° ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, Π° наш соврСмСнный Π·Π°Π²ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒ удобство ΠΈ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚ выпускаСмой ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ соврСмСнным стандартам.

Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ ΠΌΠΎΠ΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ряд Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ: сСдан, унивСрсал ΠΈ ΠΌΠ°Π»ΠΎΠ»ΠΈΡ‚Ρ€Π°ΠΆΠ½Ρ‹ΠΉ хэтч-бэк. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ собираСмся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ с нуля, Π°, взяв Π·Π° основу ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅, внСсём ряд конструктивных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. НапримСр, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π³ΠΈΠ΄Ρ€ΠΎΡƒΡΠΈΠ»ΠΈΡ‚Π΅Π»ΡŒ руля ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ Π·Π°Π·ΠΎΡ€Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΡ€Ρ‹Π»ΡŒΡΠΌΠΈ ΠΈ ΠΊΡ€Ρ‹ΡˆΠΊΠΎΠΉ ΠΊΠ°ΠΏΠΎΡ‚Π°, поставим ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ‚ΡƒΠΌΠ°Π½Π½Ρ‹Π΅ Ρ„ΠΎΠ½Π°Ρ€ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Ρ„ΠΎΡ€ΠΌΠ° ΠΊΡƒΠ·ΠΎΠ²Π°.

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

НСобходимо ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ удовлСтворяСт спСцификации Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния интСрфСйсов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π½Π΅ Π²Π΅Ρ€Π½ΠΎ.

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

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚ старой ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ дСйствия, ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ‚ΡƒΠΌΠ°Π½ΠΎΠΊ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… просто Π½Π΅Ρ‚ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ).

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

НаслСдованиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ: Π·Π°ΠΊΠΎΠΏΠ°ΠΉΡ‚Π΅ ΡΡ‚ΡŽΠ°Ρ€Π΄Π΅ΡΡΡƒ

Как извСстно, классичСскоС ООП покоится Π½Π° Ρ‚Ρ€Π΅Ρ… ΠΊΠΈΡ‚Π°Ρ…:

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΆΠ΅ рСализация ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

НаслСдованиС Π»ΠΎΠΌΠ°Π΅Ρ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ

Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΠΌ Π±Ρ‹Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΎΡ‚ΠΊΠ°Π·, Π½ΠΎ ΠΊΠ°ΠΊ насчСт ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ?

ВсС, ΠΊΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ наслСдования ΠΎΡ‚ своих классов (WinForms, WPF, WebForms, ASP.NET), Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΠ΄ΡƒΡ‚ подтвСрТдСния всСм Ρ‚Ρ€Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌ Π² своСм ΠΎΠΏΡ‹Ρ‚Π΅.
НСуТСли всС Ρ‚Π°ΠΊ ΠΏΠ»ΠΎΡ…ΠΎ?

ВСорСтичСскоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅

ВлияниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ»Π°Π±ΠΈΡ‚ΡŒ принятиСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΉ:

1. Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹
Π­Ρ‚ΠΎ соглашСниС Π»ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°Π±Π»ΠΈΠΊΠΎΠ² ΠΌΠΎΡ€ΠΎΠ·ΠΎΠ²Ρ‹Ρ… ΠΊΠ°ΠΊ класс.

2. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€Π΅Π΄ΠΊΠ° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚
Π­Ρ‚ΠΎ соглашСниС позволяСт ΡΠΎΡ‡Π΅Ρ‚Π°Ρ‚ΡŒ Π·Π½Π°Π½ΠΈΠ΅ ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΊΠ° с Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ Π½Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠΆΠ΅ Π² ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ΅.

3. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€Π΅Π΄ΠΊΠ° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π΅Π³ΠΎ ΠΊΠΎΠ΄Π΅
Π­Ρ‚ΠΎ соглашСниС позволяСт ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΊΠ°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ публичности всСх Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

4. ЭкзСмпляры ΠΏΡ€Π΅Π΄ΠΊΠ° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ
Π­Ρ‚ΠΎ соглашСниС позволяСт ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ нСсоотвСтствия Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ (ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ класса) с ΠΎΠ΄Π½ΠΎΠΉ стороны ΠΈ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ (Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ класса) с Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Лисков ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Π»ΡŽΡΡ‚ΠΈ, Π½Π΅ вступая Π² ΠΏΠΎΡ€ΠΎΡ‡Π½ΡƒΡŽ связь с Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ содСрТимым ΠΏΡ€Π΅Π΄ΠΊΠ°.

5. ΠΠ΅Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ‡Π»Π΅Π½ΠΎΠ² Ρƒ ΠΏΡ€Π΅Π΄ΠΊΠ° Π½Π΅Ρ‚
Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… соглашСний Π½Π΅Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ ΠΏΡ€Π΅Π΄ΠΊΠ° становятся бСсполСзными ΠΈ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‚ Π»ΠΈΠΊΠ²ΠΈΠ΄Π°Ρ†ΠΈΠΈ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: Ссли класс-ΠΏΡ€Π΅Π΄ΠΎΠΊ состоит ΠΈΠ· ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… пустых ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π½ΠΈΠΌ для ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ², Ρ‚ΠΎ наслСдованиС ΡƒΠΆΠ΅ Π½Π΅ Π»ΠΎΠΌΠ°Π΅Ρ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ. Π§Ρ‚ΠΎ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ.

ΠŸΠΎΠΏΡƒΡ‚Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€ΠΎΠΌΠ±Π° для случая мноТСствСнного наслСдования ΠΎΡ‚ ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΊΠΎΠ². Но это всС тСория, Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π˜Ρ‚ΠΎΠ³ΠΈ

PS: ДополнСния ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠ° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ.

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

BestProg

НаслСдованиС. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ понятия. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ нСдостатки. ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ°. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа protected

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

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

1. Π§Ρ‚ΠΎ собой прСдставляСт наслСдованиС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ?

НаслСдованиС – это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ классу ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ (Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ) класса, дополняя Π΅Π³ΠΎ своими собствСнными дСталями Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π˜Π½Ρ‹ΠΌΠΈ словами, ΠΏΡ€ΠΈ наслСдовании происходит ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ (ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ) класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ собствСнных особСнностСй использования. НаслСдованиС ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΊ Ρ‚ΠΈΠΏΡƒ is-a ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ классами. ΠŸΡ€ΠΈ наслСдовании создаСтся спСциализированная вСрсия ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса.

2. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° использования наслСдования Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° наслСдования Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ взаимосвязанныС прСимущСства:

3. НСдостатки наслСдования

ΠŸΡ€ΠΈ использовании наслСдования Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π±Ρ‹Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ нСдостатки:

4. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс? Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс?

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ класс (base class) – это класс, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² унаслСдованных (ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ…) классах. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс (derived class) – это класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΈ измСняСт (Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚) Π΅Π³ΠΎ ΠΏΠΎΠ΄ свои потрСбности.

Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Java) Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс Π΅Ρ‰Π΅ называСтся супСркласс (superclass), Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс называСтся подкласс (subclass).

5. Бинтаксис наслСдования Π² случаС Π΄Π²ΡƒΡ… классов. ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ°

Если ΠΎΠ΄ΠΈΠ½ класс наслСдуСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс, Ρ‚ΠΎ общая Ρ„ΠΎΡ€ΠΌΠ° объявлСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

НапримСр.

ВсС элСмСнты Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ private нСдоступны Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСмонстрируСтся влияниС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² доступа Π½Π° доступ ΠΊ элСмСнтам Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ классов.

7. Бколько классов ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ унаслСдовано ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса?

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа protected internal ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° protected ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° internal (см. ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅). Π—Π΄Π΅ΡΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π° случая:

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

ООП. Π§Π°ΡΡ‚ΡŒ 5. НаслСдованиС ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°

Π’Ρ‹ всё врСмя ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ наслСдования, Π΄Π°ΠΆΠ΅ Ссли Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ этого. РассказываСм, ΠΊΠ°ΠΊ мСньшС Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρƒ всСх классов.

экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании. f897e300655216e4f78ec0b13ee6fff9. экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании Ρ„ΠΎΡ‚ΠΎ. экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании-f897e300655216e4f78ec0b13ee6fff9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° f897e300655216e4f78ec0b13ee6fff9. Π’ΠΎΠ»Π΅ΡŽ ΡΡƒΠ΄ΡŒΠ±Ρ‹ ΠΌΠ½Π΅ приходится Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ спСцкурс ΠΏΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌ проСктирования Π² Π²ΡƒΠ·Π΅. БпСцкурс ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, поэтому, студСнты ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΊΠΎ ΠΌΠ½Π΅ самыС Ρ€Π°Π·Π½Ρ‹Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ срСди Π½ΠΈΡ… ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΠ΅ программисты. Но, ΠΊ соТалСнию, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ затруднСния Π΄Π°ΠΆΠ΅ с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ основных Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ООП.

экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании. 5944642501a10bb5cd9b926294d5e23c. экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании Ρ„ΠΎΡ‚ΠΎ. экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании-5944642501a10bb5cd9b926294d5e23c. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 5944642501a10bb5cd9b926294d5e23c. Π’ΠΎΠ»Π΅ΡŽ ΡΡƒΠ΄ΡŒΠ±Ρ‹ ΠΌΠ½Π΅ приходится Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ спСцкурс ΠΏΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌ проСктирования Π² Π²ΡƒΠ·Π΅. БпСцкурс ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, поэтому, студСнты ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΊΠΎ ΠΌΠ½Π΅ самыС Ρ€Π°Π·Π½Ρ‹Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ срСди Π½ΠΈΡ… ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΠ΅ программисты. Но, ΠΊ соТалСнию, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ затруднСния Π΄Π°ΠΆΠ΅ с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ основных Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ООП.

Π’ΠΎΡ‚ ΠΌΡ‹ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ ΠΊ послСднСму столпу ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования β€” наслСдованию. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ классы с ΠΎΠ±Ρ‰ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ, Π½Π΅ копируя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

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

экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании. kucheryaviy. экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании Ρ„ΠΎΡ‚ΠΎ. экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании-kucheryaviy. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° kucheryaviy. Π’ΠΎΠ»Π΅ΡŽ ΡΡƒΠ΄ΡŒΠ±Ρ‹ ΠΌΠ½Π΅ приходится Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ спСцкурс ΠΏΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌ проСктирования Π² Π²ΡƒΠ·Π΅. БпСцкурс ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, поэтому, студСнты ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΊΠΎ ΠΌΠ½Π΅ самыС Ρ€Π°Π·Π½Ρ‹Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ срСди Π½ΠΈΡ… ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΠ΅ программисты. Но, ΠΊ соТалСнию, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ затруднСния Π΄Π°ΠΆΠ΅ с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ основных Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ООП.

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

Как Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ класс

Для Π½Π°Ρ‡Π°Π»Π° создадим класс, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π΅Π³ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ:

Π­Ρ‚ΠΎΡ‚ класс (Vehicle) прСдставляСт собой транспортноС срСдство, Π½ΠΎ ΠΏΠΎΠΊΠ° Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слишком ΠΎΠ±Ρ‰ΠΈΠ΅ свойства (Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ) ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅). Нам ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠΆΠ΅ относится ΠΊ транспортным срСдствам, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ. НапримСр, это Π±ΡƒΠ΄Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ (Car).

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ класс Car наслСдовал поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Vehicle, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π΅Π³ΠΎ объявлСнии послС названия Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ ΠΈ имя Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса Car ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ всСми полями ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ класса Vehicle:

экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании. info 0 40IVGA. экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании Ρ„ΠΎΡ‚ΠΎ. экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании-info 0 40IVGA. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° info 0 40IVGA. Π’ΠΎΠ»Π΅ΡŽ ΡΡƒΠ΄ΡŒΠ±Ρ‹ ΠΌΠ½Π΅ приходится Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ спСцкурс ΠΏΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌ проСктирования Π² Π²ΡƒΠ·Π΅. БпСцкурс ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, поэтому, студСнты ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΊΠΎ ΠΌΠ½Π΅ самыС Ρ€Π°Π·Π½Ρ‹Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ срСди Π½ΠΈΡ… ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΠ΅ программисты. Но, ΠΊ соТалСнию, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ затруднСния Π΄Π°ΠΆΠ΅ с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ основных Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ООП.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΡƒΠΆΠ½ΠΎ просто ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΈΡ…:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ этого класса ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ Move (), Ρ‚Π°ΠΊ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Beep (). Π’ΠΎ ΠΆΠ΅ самоС касаСтся ΠΈ ΠΏΠΎΠ»Π΅ΠΉ.

НаслСдованиС конструкторов

Допустим, Ρƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Π΅ΡΡ‚ΡŒ конструктор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚:

ВсС Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² своих конструкторах, пСрСдавая Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово base:

Π’ скобках послС base указываСтся Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс. ΠŸΡ€ΠΈ этом ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ присваивания name Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‚ΠΎ просто создайтС Π² наслСдуСмом классС пустой конструктор.

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Часто Π±Ρ‹Π²Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ. НапримСр, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Move () для класса Car ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ условиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Π½Π΅ ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ Π»ΠΈ Ρ‚ΠΎΠΏΠ»ΠΈΠ²ΠΎ. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свойство.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Π’ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ классС для Π½ΠΈΡ… указываСтся ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ virtual:

А Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ для пСрСопрСдСлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ override:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ для Ρ€Π°Π·Π½Ρ‹Ρ… классов. Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ.

НаслСдованиС ΠΎΡ‚ класса Object

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса, сущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ класс Object, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…. Π£ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

Π₯Сш β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прСобразования Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ.

Π›ΡŽΠ±ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½. НапримСр, ΠΌΠ΅Ρ‚ΠΎΠ΄ Equals () ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ провСрял, Ρ€Π°Π²Π½Ρ‹ Π»ΠΈ поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Equals () Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car. ΠžΡ‚ΡΡŽΠ΄Π° слСдуСт, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ наслСдования

Π•ΡΡ‚ΡŒ нСсколько особСнностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с наслСдованиСм:

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ это ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ, стоит ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π”ΠΎΠΌΠ°ΡˆΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ нСсколько классов пСрсонаТСй: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΠΈΠ½, Π»ΡƒΡ‡Π½ΠΈΠΊ ΠΈ ΠΌΠ°Π³.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… классов допустим, Π²ΠΎΠΈΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом для рыцаря ΠΈ бСрсСркСра.

Π£ всСх пСрсонаТСй Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Attack (), ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… пСрсонаТСй Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ сообщСния. НапримСр, Ссли Π°Ρ‚Π°ΠΊΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°Π³, Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ сообщСниС, Ρ‡Ρ‚ΠΎ ΠΎΠ½ запустил ΠΎΠ³Π½Π΅Π½Π½Ρ‹ΠΉ ΡˆΠ°Ρ€.

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

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

А Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ООП со всСми Π΅Π³ΠΎ особСнностями, Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° курс Β«C#-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ с 0 Π΄ΠΎ PROΒ». Π’Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° C# сайты ΠΈ дСсктопныС прилоТСния, выТимая максимум ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

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

НаслСдованиС в C++: beginner, intermediate, advanced

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ наслСдованиС описано Π½Π° Ρ‚Ρ€Π΅Ρ… уровнях: beginner, intermediate ΠΈ advanced. Expert Π½Π΅Ρ‚. И Π½ΠΈ слова ΠΏΡ€ΠΎ SOLID. ЧСстно.

Beginner

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

НаслСдованиС являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП. Π’ соотвСтствии с Π½ΠΈΠΌ, класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса ΠΊΠ°ΠΊ свои собствСнныС.

Класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт Π΄Π°Π½Π½Ρ‹Π΅, называСтся подклассом (subclass), ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом (derived class) ΠΈΠ»ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ классом (child). Класс, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, называСтся супСрклассом (super class), Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом (base class) ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ классом (parent). Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹ β€œΡ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉβ€ ΠΈ β€œΠ΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉβ€ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для понимания наслСдования. Как Ρ€Π΅Π±Π΅Π½ΠΎΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ характСристики своих Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.

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

Π’Π°ΠΆΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ унаслСдованы.

Π’ΠΈΠΏΡ‹ наслСдования

Π’ C ++ Π΅ΡΡ‚ΡŒ нСсколько Ρ‚ΠΈΠΏΠΎΠ² наслСдования:

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ дСструкторы

Π’ C ++ конструкторы ΠΈ дСструкторы Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ. Однако ΠΎΠ½ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ свой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ иСрархичСски, начиная с Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΈ заканчивая послСдним ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом. ДСструкторы Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

Π’Π°ΠΆΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ освСщСны Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ дСсктрукторы. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π° эту Ρ‚Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π° Ρ…Π°Π±Ρ€Π΅.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС происходит, ΠΊΠΎΠ³Π΄Π° подкласс ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ супСркласса. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, класс Laptop наслСдуСт ΠΈ Monitor ΠΈ Computer ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° мноТСствСнного наслСдования

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ проСктирования, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹ΠΌ послСдствиям. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ‚Π°ΠΊΠΈΡ… послСдствий Π²Ρ‹Π·Π²Π°Π½Ρ‹ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π² наслСдовании. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Laptop наслСдуСт ΠΌΠ΅Ρ‚ΠΎΠ΄ turn_on() ΠΎΡ‚ ΠΎΠ±ΠΎΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈ нСясно ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ, Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ наслСдованиС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ уровня доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π½Π° ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠŸΡ€ΠΈ компиляции, сначала происходит поиск ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° ΡƒΠΆΠ΅ послС β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° уровня доступа ΠΊ Π½ΠΈΠΌ.

Intermediate

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€ΠΎΠΌΠ±Π°

экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании. image loader. экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании Ρ„ΠΎΡ‚ΠΎ. экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° экономия ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ наслСдовании. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π’ΠΎΠ»Π΅ΡŽ ΡΡƒΠ΄ΡŒΠ±Ρ‹ ΠΌΠ½Π΅ приходится Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ спСцкурс ΠΏΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌ проСктирования Π² Π²ΡƒΠ·Π΅. БпСцкурс ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, поэтому, студСнты ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΊΠΎ ΠΌΠ½Π΅ самыС Ρ€Π°Π·Π½Ρ‹Π΅. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ срСди Π½ΠΈΡ… ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΠ΅ программисты. Но, ΠΊ соТалСнию, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ затруднСния Π΄Π°ΠΆΠ΅ с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ основных Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ООП.

Ромбовидная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΠΈΠ·Π°ΠΉΠ½Π°, ΠΈ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ прСдусмотрСна Π½Π° этапС проСктирования. На этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€ΠΎΠΌΠ±Π°: ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ дСструкторы

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π‘++ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ конструкторы всСх Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классов, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈ другая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: конструктор Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Device Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ Π΄Π²Π°ΠΆΠ΄Ρ‹.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ наслСдованиС

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ наслСдованиС (virtual inheritance) ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ появлСниС мноТСствСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ наслСдования. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, конструктор Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Device Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΆΠ΄Ρ‹, Π° ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ turn_on() Π±Π΅Π· Π΅Π³ΠΎ пСрСопрСдСлСния Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ компиляции.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ наслСдованиС Π² классах Computer ΠΈ Monitor Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ Ρ€ΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½ΠΎΠ΅ наслСдованиС Ссли Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс Laptop Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ класс Device Π½Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ( class Laptop: public Computer, public Monitor, public Device <>; ).

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

Π’ Π‘++, класс Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сущСствуСт хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ чистый Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ (pure virtual) принято ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ абстрактным. Если Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС, ΠΊΠΎΠ΄ Π½Π΅ скомпилируСтся. Π’Π°ΠΊΠΆΠ΅, Π² Π‘++ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ абстрактного класса Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ‚ΠΎΠΆΠ΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ компиляции.

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

Π‘++, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ООП языков, Π½Π΅ прСдоставляСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова для обозначСния интСрфСйса (interface). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, рСализация интСрфСйса Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΏΡƒΡ‚Π΅ΠΌ создания чистого абстрактного класса (pure abstract class) β€” класса Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’Π°ΠΊΠΈΠ΅ классы Ρ‚Π°ΠΊΠΆΠ΅ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ абстрактными Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ классами (Abstract Base Class β€” ABC).

Advanced

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

НаслСдованиС ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ частично Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ класса

Если наслСдованиС происходит Π½Π΅ ΠΎΡ‚ интСрфСйса (чистого абстрактного класса Π² контСкстС Π‘++), Π° ΠΎΡ‚ класса Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ класс наслСдник связан с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ классом Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ тСсной ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… связью. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² классС родитСля ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΡŒ наслСдника Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΠΎΠΌΡƒ повСдСнию. Π’Π°ΠΊΠΈΠ΅ измСнСния Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ наслСдника Π½Π΅ всСгда ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ β€” ошибка ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π² ΡƒΠΆΠ΅ оттСстированом ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠΎΠ΄Π΅. Данная ситуация усугубляСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ слоТной ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов. ВсСгда стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π³ΠΎ написал, ΠΈ ΠΏΡƒΡ‚ΠΈ наслСдования ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ для Π°Π²Ρ‚ΠΎΡ€Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΡƒΡ‡Ρ‚Π΅Π½Ρ‹ Π΅Π³ΠΎ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ.

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

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

НаслСдованиС ΠΎΡ‚ интСрфСйса (чистого абстрактного класса) прСподносит наслСдованиС ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ структурирования ΠΊΠΎΠ΄Π° ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’Π°ΠΊ ΠΊΠ°ΠΊ интСрфСйс описываСт ΠΊΠ°ΠΊΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ класс-рСализация, Π½ΠΎ Π½Π΅ описываСт ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ, любой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ интСрфСйса ΠΎΠ³Ρ€Π°ΠΆΠ΄Π΅Π½ ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² классС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ этот интСрфСйс.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ: ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго стоит Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ тСсно связан с понятиСм ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°, Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСн Π² контСкстС наслСдования ΠΎΡ‚ чистого абстрактного класса.

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

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ однозначности ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ форматирования ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π½Π΅ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”Π²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ β€” ΠΎΠ΄ΠΈΠ½ Π½Π°Π΄ бизнСс Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π½Π°Π΄ парсСром. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‡Π΅Ρ€Π΅Π· этот интСрфСйс, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСзависимо. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡŽΠ½ΠΈΡ‚ тСстами, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ тСсты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ написаны с использованиСм ΠΌΠΎΠΊΠ° (mock) для этого интСрфСйса.

Π’Π°ΠΊΠΆΠ΅, ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, бизнСс Π»ΠΎΠ³ΠΈΠΊΠ° прилоТСния Π½Π΅ затрагиваСтся. ЕдинствСнноС Ρ‡Π΅Π³ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ форматирования ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ β€” написания Π½ΠΎΠ²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ абстрактного класса (класса-парсСра). Π’ дальнСйшСм, Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ Ρ„Π°ΠΉΠ»Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ минимальной Ρ€Π°Π±ΠΎΡ‚Ρ‹ β€” ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ парсСра Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

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

НаслСдованиС прСдоставляСт мноТСство прСимущСств, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ спроСктировано Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚. Π’ контСкстС наслСдования, Π‘++ прСдоставляСт ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр инструмСнтов ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ массу возмоТностСй для программиста.

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

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

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