java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

АнонимныС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы

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

Π˜Ρ‚Π°ΠΊ, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… классов ΠΈΠ»ΠΈ интСрфСйсов. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ класс (ΠΈΠ»ΠΈ интСрфСйс), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π°, Π·Π°Ρ‚Π΅ΠΌ, Π² процСссС создания экзСмпляра этого класса, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Ρ‡Π΅Ρ€Π΅Π· Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс. Π­Ρ‚ΠΎ дСлаСтся ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ синтаксису:

btn = new () <
// Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
// Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ класса
>

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, Π²ΠΎΡ‚ эти Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, Ρ‡Ρ‚ΠΎ ΠΈΠ΄ΡƒΡ‚ послС создания экзСмпляра класса (ΠΈΠ»ΠΈ интСрфСйса) ΠΈ Π΅ΡΡ‚ΡŒ объявлСниС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Π½Π΅Π³ΠΎ ΠΌΡ‹ явно Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Π₯отя имя Ρƒ Π½Π΅Π³ΠΎ всС-Ρ‚Π°ΠΊΠΈ Π΅ΡΡ‚ΡŒ. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java автоматичСски присвоит Π΅ΠΌΡƒ имя ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ

Π³Π΄Π΅ X – Ρ†Π΅Π»ΠΎΠ΅ число (порядковый Π½ΠΎΠΌΠ΅Ρ€ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса).

Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с классом Button, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€Π°Π²Π΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° здСсь ΠΏΠΎΠΊΠ° Π΅Ρ‰Π΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ‚. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ, Π° Π·Π°ΠΎΠ΄Π½ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ для Ρ‡Π΅Π³ΠΎ всС это Π½ΡƒΠΆΠ½ΠΎ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ click() ΠΈ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΡ‹ ΠΏΡ€ΠΎΠΏΠΈΡˆΠ΅ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса Button:

Но Π΄Π°Π»Π΅Π΅, ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ собираСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот класс ΠΊΠ½ΠΎΠΏΠΊΠΈ для Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡: открытия Ρ„Π°ΠΉΠ»Π°, сохранСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, копирования Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚.ΠΏ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ наши Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ знания, ΠΌΡ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ создали Π±Ρ‹ нСсколько Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классов ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π² Π½ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ click():

И Ρ‚Π°ΠΊ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, Ρƒ нас Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ появится большоС число Ρ€Π°Π·Π½Ρ‹Ρ… Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классов ΠΈ ΠΈΡ… количСство Π±ΡƒΠ΄Π΅Ρ‚ постоянно расти ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ развития ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π’ΠΎΡ‚ здСсь, ΠΊΠ°ΠΊ Ρ€Π°Π·, Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΈ приходят Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ классы. ВмСсто создания Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классов, ΠΌΡ‹ ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Button, сразу ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ click с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса:

И, Π·Π°Ρ‚Π΅ΠΌ, вызывая этот ΠΌΠ΅Ρ‚ΠΎΠ΄:

Π² консоли ΡƒΠ²ΠΈΠ΄ΠΈΠΌ сообщСниС:

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

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Π΅Π΅ посмотрим, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ эта конструкция. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ Ρ‚Π°ΠΊΠΎΠΉ малСнький экспСримСнт. Если Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄:

А, Π·Π°Ρ‚Π΅ΠΌ, Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· ссылку btnCopy:

Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка. Π‘ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ: ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ click(), Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ doSome()? Π― Π΄ΡƒΠΌΠ°ΡŽ, Π²Ρ‹ ΡƒΠΆΠ΅ догадались ΠΏΠΎΡ‡Π΅ΠΌΡƒ. ВсС Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс фактичСски наслСдуСтся ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Button. Π’ этом смысл слова Β«Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉΒ» Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ click() благодаря ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ динамичСской диспСтчСризации ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ click() объявлСн Π² классС Button. А Π²ΠΎΡ‚ Β«Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡΒ» Π΄ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° doSome() ΡƒΠΆΠ΅ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ возмоТности. Но, Ссли Π½Π°ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ссылки btnCopy Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΈΠΌΠ΅Π»Π° Ρ‚ΠΈΠΏ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса:

Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° doSome() Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚, Ρ‚.ΠΊ. ссылка btnCopy Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса (благодаря ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову var, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния ΠΊΠΎΠ΄Π° автоматичСски ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ссылку ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…).

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ здСсь создаСтся Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Button, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса.

ИспользованиС Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… классов с интСрфСйсами

Π’ нашСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ сущСствСнный нСдостаток: Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс встраиваСтся Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ наслСдования:

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, программист ΠΌΠΎΠΆΠ΅Ρ‚ случайно (ΠΈΠ»ΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ) ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ ΡˆΡ‚Π°Ρ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Button. Π‘ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ интСрфСйсы. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ интСрфСйс EventHandler, связанный с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° события, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ объявлСн абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ execute(). Π”Π°Π»Π΅Π΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈ создании экзСмпляра класса Button ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс EventHandler с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π½ΡƒΠΆΠ½ΡƒΡŽ Π½Π°ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° execute:

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

На ΡƒΡ€ΠΎΠ²Π½Π΅ языка Java всС это ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ. Π‘Π½Π°Ρ‡Π°Π»Π° запишСм интСрфСйс EventHandler ΠΈ класс Button:

А, Π·Π°Ρ‚Π΅ΠΌ, создадим ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ main():

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ элСгантно ΠΈ красиво выглядит рСализация ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ события Π² классС Button. Π‘Π½Π°Ρ‡Π°Π»Π°, ΠΏΡ€ΠΈ создании экзСмпляра ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ Ρ‚ΡƒΡ‚ ΠΆΠ΅ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс EventHandler. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок обязаны ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ execute() с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π”Π°Π»Π΅Π΅, ссылку Π½Π° созданный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² конструктор класса Button ΠΈ сохраняСм Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΈΠΏ интСрфСйса EventHandler. Нам этого Π²ΠΏΠΎΠ»Π½Π΅ достаточно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π·Π°Ρ‚Π΅ΠΌ, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ click() Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ execute() Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ классС Ρ‡Π΅Ρ€Π΅Π· ссылку handler. ВсС, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ события ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса Button ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ интСрфСйсами ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ событий. Π­Ρ‚ΠΎ обСспСчиваСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Β«Π½Π° Π»Π΅Ρ‚ΡƒΒ» ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° основС Π΄Ρ€ΡƒΠ³ΠΈΡ… классов ΠΈΠ»ΠΈ интСрфСйсов.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#11 ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП)

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#12 ΠšΠ»Π°ΡΡΡ‹ ΠΈ созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² классов

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#13 ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹, ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#14 ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса, сСттСры ΠΈ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹, public, private, protected

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#15 ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ конструкторов ΠΈ классов

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#16 ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова static ΠΈ final

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#17 Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#18 Как дСлаСтся наслСдованиС классов

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#19 ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово super, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ instanceof

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#20 ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ private ΠΈ protected, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#21 АбстрактныС классы ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#24 АнонимныС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#25 ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ (enum)

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#26 ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΡ классов (Generics)

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#27 ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ², ΠΌΠ΅Ρ‚Π°ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ конструкторы

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

#28 ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Π΅ интСрфСйсы, наслСдованиС ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹Ρ… классов

Β© 2021 ЧастичноС ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с Π΄Π°Π½Π½ΠΎΠ³ΠΎ сайта для распространСния Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π±ΡƒΠΌΠ°ΠΆΠ½Ρ‹Ρ…, строго Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ. ВсС тСксты ΠΈ изобраТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ сайта

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

АнонимныС классы

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

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Если Π²Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π½Π° языкС Java, Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ классы, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассматриваСтся ΠΎΠ΄ΠΈΠ½ ΠΈΠ· особых Ρ‚ΠΈΠΏΠΎΠ² влоТСнности, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ «Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌ классом». Для Π½Π°Ρ‡Π°Π»Π° взглянСм Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

static class B <
> // статичСский Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс

class C <
> // Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс

void f () <
class D <
> // Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс
>

void g () <
// Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс
Base bref = new Base () <
void method1 () <
>
> ;
>
>

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

Base bref1 = new Base () <
void method1 () <>
> ;

Base bref2 = new Base () <
void method1 () <>
> ;

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ выраТСния.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ примСнСния

Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class AnonDemo2 <
public static void main ( String args []) <

// ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ JFrame ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊ
// событий для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ закрытия ΠΎΠΊΠ½Π°

JFrame frame = new JFrame ( «AnonDemo2» ) ;
frame.addWindowListener ( new WindowAdapter () <
public void windowClosing ( WindowEvent e ) <
System.exit ( 0 ) ;
>
>) ;

// ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ JPanel ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ Ρ„Ρ€Π΅ΠΉΠΌΡƒ

frame.pack () ;
frame.setVisible ( true ) ;
>
>

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ JPanel Π½Π° экранС. К ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ JFrame добавляСтся ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‡ΠΈΠΊ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

WindowsListener являСтся интСрфСйсом. Класс Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² интСрфСйсС. WindowAdapter Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

public abstract class WindowAdapter implements WindowListener,
WindowStateListener, WindowFocusListener <
public void windowOpened ( WindowEvent e ) <
>

public void windowClosing ( WindowEvent e ) <
>

public void windowClosed ( WindowEvent e ) <
>

public void windowIconified ( WindowEvent e ) <
>

public void windowDeiconified ( WindowEvent e ) <
>

public void windowActivated ( WindowEvent e ) <
>

public void windowDeactivated ( WindowEvent e ) <
>

public void windowStateChanged ( WindowEvent e ) <
>

public void windowGainedFocus ( WindowEvent e ) <
>

public void windowLostFocus ( WindowEvent e ) <
>
>

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° списка с использованиСм Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… классов

Рассмотрим Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ список List ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Integer, ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ список ΠΈ Π² Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΌ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) ΠΈ Π² ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ порядкС. Π’ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ эту Π·Π°Π΄Π°Ρ‡Ρƒ:

public class AnonDemo3 <
public static void main ( String args []) <

// ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ArrayList ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ
// нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Integer

// ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ список ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ способом (ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ)

Collections.sort ( list ) ;
System.out.println ( list ) ;

// ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ список ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ,
// ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ
// ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСт ΠΏΠ΅Ρ€Π²ΡƒΡŽ сортировку ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ способом. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сортировку ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Comparator.Π­Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π»ΠΎΠ³ΠΈΠΊΡƒ сравнСния для сортировки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Integer Π² ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ порядкС.

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

ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ сортировки Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим послСдний ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ дСмонстрируСтся нСсколько ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² использования Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… классов:

class A <
int afield;

// ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ afield

// ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ afield

int getValue () <
return afield;
>
>

public class AnonDemo4 <
static A createAnon () <
final int dlocal = 40 ;

// Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° f() экзСмпляр
// Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ· A

// Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ конструктор супСркласса
return new A ( 10 ) <
int bfield = 20 ;
int cfield;

int getValue () <
return afield + bfield + cfield + dlocal;
>
> ;
>

public static void main ( String args []) <
A anonref = createAnon () ;

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ createAnon ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Ρ‚ΠΈΠΏΠ° супСркласс (A) Π½Π° экзСмпляр Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ экзСмпляр Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Π²Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π΅Π³ΠΎ контСкста (createAnon). Π”Π°Π»Π΅Π΅ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ getValue ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ссылки Π½Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс.

ВспомнитС, Ρ‡Ρ‚ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ классы Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠΌΠ΅Π½ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ явныС конструкторы. Но сущСствуСт нСсколько способов прСодолСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ ограничСния. Когда создаСтся экзСмпляр Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

автоматичСски вызываСтся конструктор супСркласса.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ экзСмпляра Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса происходит ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ

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

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ локальная пСрСмСнная Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ связанной с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано вмСсто самой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (dlocal). Π’ΠΎ Π΅ΡΡ‚ΡŒ, вмСсто использования «dlocal» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «40».

АнонимныС классы ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, Π½ΠΎ нСльзя ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ. Какой-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ класса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈ использовании Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, Π»ΠΈΠ±ΠΎ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π»ΠΎΠ³ΠΈΠΊΠ° Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса являСтся слоТной, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ влоТСнности классов. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, объявлСния Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… классов Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹, поэтому Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… простыми.

Бсылки

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΎΠ± Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… классах находится Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 5.4 «ΠΠ½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы» ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° «Π―Π·Ρ‹ΠΊ программирования Java(tm)» ΠΡ€Π½ΠΎΠ»ΡŒΠ΄Π°, Гослинга ΠΈ Π₯олмса (Arnold, Gosling, Holmes).

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Ρƒ «ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ статичСских классов-Ρ‡Π»Π΅Π½ΠΎΠ² Π½Π°Π΄ нСстатичСскими» Π² ΠΊΠ½ΠΈΠ³Π΅ «Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ руководство ΠΏΠΎ языку программирования Java» Π”ΠΆΠΎΡˆΡƒΠ° Π‘Π»ΠΎΡ…Π° (Joshua Bloch).

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

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Java классы

Π’ Java Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы – это классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса.

ЦСль – Ρ‡Π΅Ρ‚ΠΊΠΎ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс с ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΌ Π΅Π³ΠΎ классом, сигнализируя ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эти Π΄Π²Π° класса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ вмСстС. Или, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΅Π³ΠΎ Π²ΠΌΠ΅Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎ (Π²Π»Π°Π΄Π΅ΡŽΡ‰Π΅Π³ΠΎ) класса.

Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы (нСстатичСскиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅) – это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²:

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΈΡ… класса. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅, ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ (Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° доступа), Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ подклассами.

БтатичСскиС

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса Nested, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π³ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΊ Π½Π΅ΠΌΡƒ прСфикс ΠΈΠΌΠ΅Π½ΠΈ внСшнСго класса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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

НСстатичСскиС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы

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

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π²Ρ‹ создаСтС экзСмпляр класса Inner:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Π²Ρ‹ ставитС new послС ссылки Π½Π° внСшний класс, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ.

НСстатичСскиС классы (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы) ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ полям Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ класса, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ printText() класса Inner ссылаСтся Π½Π° ΠΏΠΎΠ»Π΅ частного тСкста класса Outer. Π­Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π²Ρ‹ Π±Ρ‹ Π²Ρ‹Π·Π²Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ printText():

Shadowing

Если Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ поля ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ поля ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² своСм Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΌ классС, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ поля ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ внСшними полями ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ :

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класс Outer ΠΈ Inner содСрТит ΠΏΠΎΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ text. Когда класс Inner ссылаСтся Π½Π° тСкст, ΠΎΠ½ ссылаСтся Π½Π° своС собствСнноС ΠΏΠΎΠ»Π΅. Когда Outer ссылаСтся Π½Π° тСкст, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ссылаСтся Π½Π° своС собствСнноС ΠΏΠΎΠ»Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Inner.printText() Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ поля Inner.text ΠΈ Outer.text.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ классы Π² Java ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ (нСстатичСскиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ° контСкста(<…>) Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

Π₯арактСристика Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… классов:

АнонимныС

АнонимныС классы – это Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ класса. Они ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ подклассы ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса, Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ интСрфСйса.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ подкласс супСркласса с ΠΈΠΌΠ΅Π½Π΅ΠΌ SuperClass:

Запуск этого ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс doIt() Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ Π² System.out. Он Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ SuperClass ΠΈ пСрСопрСдСляСт ΠΌΠ΅Ρ‚ΠΎΠ΄ doIt().

Анонимный класс Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ интСрфСйс вмСсто Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ класса:

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

Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ класса ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ класса. Π’Π°ΠΊΠΆΠ΅ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ final.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ конструктор. ВмСсто этого Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ статичСский ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€:

К этому Ρ‚ΠΈΠΏΡƒ класса ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° дублирования, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, помСстив ΠΈΡ… Π² ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚, Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡŒΠ½ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΡƒ.

Иногда ΠΎΠ½ΠΈ Π²ΠΈΠ΄Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΌΡƒ классу, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π²Π½Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ класса. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄Π΅Π½ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π΅Π³ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ класса, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вмСстС с Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ класс Cache. Π’Π½ΡƒΡ‚Ρ€ΠΈ Cache Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ класс CacheEntry, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ записи Π² кэшС (ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, врСмя вставки, количСство ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΈ Ρ‚. Π΄.).

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Cache ΠΌΠΎΠ³ΡƒΡ‚ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ CacheEntry, Ссли ΠΈΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ самом CacheEntry, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Cache ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ CacheEntry Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ для внСшнСго ΠΌΠΈΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π² послСдний Ρ€Π°Π· ΠΈ Ρ‚. Π΄.).

Π’ΠΎΡ‚ Π΄Π²Π° скСлСта Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Cache, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ эти ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ класс Cache скрываСт свой Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс CacheEntry, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π²Ρ‚ΠΎΡ€ΠΎΠΉ класс Cache прСдоставляСт Π΅Π³ΠΎ.

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

Pro Java

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹

28 Π°Π²Π³. 2015 Π³.

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы. Π§Π°ΡΡ‚ΡŒ 5 – Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ классы.

Анонимный класс – это Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ. МоТно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ (бСзымянный) класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ (extends) Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс ΠΈΠ»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ (implements) интСрфСйс. ОбъявлСниС Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса выполняСтся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с созданиСм Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° посрСдством ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° new.

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π΅ всС Ρ‚Π°ΠΊ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ Ρƒ класса всС ΠΆΠ΅ Π΅ΡΡ‚ΡŒ имя External, Π½ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ. Класс ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ класс External ΠΈ Π½Π΅ являСтся экзСмпляром класса External, хотя ссылка Π½Π° этот Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс присвоСна ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса External, Ρ‡Ρ‚ΠΎ являСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ. НадСюсь Ρ‡Ρ‚ΠΎ ΠΎΠΏΡΡ‚ΡŒ Π½ΠΈ ΠΊΡ‚ΠΎ Π½Π΅ запутался πŸ™‚

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ классАнонимныС классы, Ссли ΠΎΠ½ΠΈ созданы ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ супСр класса ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‡Π»Π΅Π½Ρ‹ своих супСр классов. Код ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚ это.

ΠŸΠ΅Ρ€Π²ΡƒΡŽ строку Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ outPrint(), Π΄Ρ€ΡƒΠ³ΠΈΠ΅ – extPrint().

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

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

Π’Ρ‹Π²ΠΎΠ΄ Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ классКак Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎ компилятор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€Π° Π² качСствС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² для Ρ‚Π°ΠΊΠΈΡ… классов. На ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ выглядят Π² ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ классы нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ классы ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚ΠΈΠΏΠΎΠ² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… классов, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ классы ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ классы нСсут ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ограничСния.

АнонимныС классы, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅, ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ своСго Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ final ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ effectively final .

АнонимныС классы ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊΠΎ всСм Ρ‡Π»Π΅Π½Π°ΠΌ своСго вСшнСго класса.

Если Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ классС объявлСна пСрСмСнная с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ°ΠΊ ΠΈ Π² ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅ΠΌ классС, Ρ‚ΠΎ ΠΎΠ½Π° затСняСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ класса.

Анонимный класс Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ статичСскиС поля, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ классы, ΠΊΡ€ΠΎΠΌΠ΅ констант static final. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объявлСн Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ способа Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ классы, Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ классы Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ public, private, protected ΠΈΠ»ΠΈ static.

Π’ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ классС Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ статичСскиС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ.

Π’ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ классС Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ интСрфСйс.

Π’ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ классС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ:

Ну ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ всСх Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ.

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

НачнСм ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ с этого πŸ™‚ Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с .this. Π’ ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ это ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΅Ρ‰Π΅ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Π½ΠΎ Ρ‡Π΅Ρ‚ запамятовал. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΡƒΡ‚ΠΈΡ€ΠΎΠ²Π°Π» Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ. Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» строку str Π² класс Outer ΠΈ Π·Π°Ρ‚Π΅ΠΌ обратился ΠΊ Π½Π΅ΠΉ ΠΈΠ· Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΈ Π΄Π²Π΅ строки подсвСчСны ΠΆΠ΅Π»Ρ‚Ρ‹ΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄:

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Ρ‚ΡƒΡ‚ Π½Π΅Ρ‚ Π½ΠΈ Ρ‡Π΅Π³ΠΎ Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ классы это Ρ‚Π΅ ΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы, Π½ΠΎ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ограничСниями ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΎΠ·Π²ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‡ΡƒΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ конструктор Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса πŸ™‚

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ конструктор Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ классС Π½Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ класс ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ наш Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌ классом ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ интСрфСйс Ρ‚Π°ΠΊΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ€ Π½Π΅ ΠΏΡ€ΠΎΠΊΠ°Ρ‚ΠΈΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ интСрфСйсов Π½Π΅Ρ‚ конструкторов.

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

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ private полям внСшнСго класса, Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ i ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π² конструктор супСр класса доступСн Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса ΠΈ этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса, Π½ΠΎ саму ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ i ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ нСльзя.

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСдставлСн Π½ΠΈΠΆΠ΅:

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ i ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π² конструктор супСркласса Base доступСн ΠΊΠ°ΠΊ Π² конструкторС супСркласса, Ρ‚Π°ΠΊ ΠΈ Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС являСтся ΠΈ наслСдником класса Base ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ Π΅Π³ΠΎ классом. ИмСнно поэтому Π΅ΠΌΡƒ доступно private static ΠΏΠΎΠ»Π΅ i. Π― ΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎ Π΄Π°Π» ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ названия Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΈ полю, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ области видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ»Π΅ΠΉ.

И Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Ρ‚Π΅ΠΌΡƒ эмулирования конструкторов Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… классах:

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

Π’ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ поля для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ доступ ΠΊ полям экзСмпляров Π² классах Base ΠΈ External. По сущСству Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… класса. Анонимный класс Π² классС Base являСтся ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Π² Π½Π΅Π³ΠΎ ΠΈ Π΅Π³ΠΎ ΠΆΠ΅ наслСдником, Π° Π² классС External Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс являСтся наслСдником класса Base ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ для класса External. ИмСнно ΠΏΠΎ этому Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ private полю str класса Base, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для доступа ΠΊ Π½Π΅ΠΌΡƒ унаслСдованный ΠΌΠ΅Ρ‚ΠΎΠ΄ getStr(). БобствСнно ΠΈΠ· Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΈΠ΄Π½ΠΎ ΠΊΠ°ΠΊ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ πŸ™‚

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ классЯ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наслСдованиС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ класс External являСтся наслСдником класса Base. И поэтому ΠΎΡ‚ Ρ‚ΡƒΠ΄Π° Π±Ρ‹Π» ΡƒΠ±Ρ€Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ getThis() ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ конструкторы. Класс Main Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π» нСбольшиС измСнСния, Ρ‚ΡƒΠ΄Π° Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠ΄Π½Π° строка.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс находящийся Π²Π½ΡƒΡ‚Ρ€ΠΈ класса External Ρ‚Π°ΠΊ ΠΆΠ΅ являСтся наслСдником класса Base.

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс. Π€ΠΎΡ‚ΠΎ java Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс

Π‘ Ρ‚Π΅ΠΎΡ€ΠΈΠ΅ΠΉ ΠΏΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ классам Π²Ρ€ΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ° всС πŸ™‚ Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ постС Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ попрактикуСмся ΠΏΠΎ всСй Ρ‚Π΅ΠΌΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… классов. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π΅Ρ‰Π΅ всплывСт Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΠΏΡƒΡ‰Π΅Π½ΠΎ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ.

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

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

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