ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡ΠΊΠ°ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ исходного ΠΊΠΎΠ΄Π°. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классах. Она Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ внСшними классами. Для взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классов компилятор вставляСт Π² Π½ΠΈΡ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ поля. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… классах ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ константы ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‚. Π΅. ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ словом… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π€Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ «Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΡ‹ управлСния»

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ указания ΠΊ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅

ΠΏΠΎ ΠΊΡƒΡ€ΡΡƒ «Π Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ систСмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ»

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы Москва 2004 Π³.

  • ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ 3
  • Π—Π°Π΄Π°Π½ΠΈΠ΅ для домашнСй ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ 3
  • Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΊ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ 3
  • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° 3
  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы. 4
  • Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

    5

  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΈΠ½Ρ‚СрфСйсы 6
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы 22
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 3. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ 28
  • ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹
  • ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ знания ΠΎΠ± ΠΈΠ½Ρ‚СрфСйсах, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ… ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… классах языка Java. ΠΠ°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ интСрфСйсы, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы.

Π—Π°Π΄Π°Π½ΠΈΠ΅ для домашнСй ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ

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

Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΊ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ банковский счСт управляСтся Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс ActionListener (ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ дСйствиС Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°), ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду добавляСт ΠΊ ΡΡƒΠΌΠΌΠ΅, Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ Π½Π° ΡΡ‡Π΅Ρ‚Ρƒ, начислСнныС Π½Π° Π½Π΅Π΅ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Ρ‹.

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

ΠžΡ‚Ρ‡Π΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ:

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΡƒ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ ΠΎΡ‚Π»Π°ΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΡ‚Π»Π°ΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, содСрТащСС описаниС интСрфСйсов всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ коммСнтариями.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы

1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ интСрфСйс Π² Java?

2. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ интСрфСйс с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° наслСдования?

3. Π”ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π»ΠΈ интСрфСйсы мноТСствСнноС наслСдованиС?.

4. Как ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Π² Java?.

5. Π§Ρ‚ΠΎ называСтся Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ классом?

6. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π»ΠΈ внСшний класс ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ класса?.

7. МоТно Π»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ класса ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ внСшнСго класса?

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ источники:

1. КСн ΠΡ€Π½ΠΎΠ»ΡŒΠ΄, ДТСймс Гослинг, Дэвид Π₯олмс. Π―Π·Ρ‹ΠΊ программирования Java™.

2. ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт Java — http://java.sun.com/ (Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» Π½Π° Ρ€ΡƒΡΡΠΊΠΎΠΌ языкС с ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΎΠΌ).

3. Java™ 2 SDK, Standard Edition Documentation — http://java.sun.com/products/jdk/1.5/index.html.

4. ДТСймс Гослинг, Π‘ΠΈΠ»Π» Π”ΠΆΠΎΠΉ, Π“Π°ΠΉ Π‘Ρ‚ΠΈΠ». БпСцификация языка Java (The Java Language Specification — http://www.javasoft.com/docs/books/jls/). ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π° Ρ€ΡƒΡΡΠΊΠΈΠΉ язык — http://www.uni-vologda.ac.ru/java/jls/index.html

5. ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Eclipse — http://www.eclipse.org/.

Π”Ρ€ΡƒΠ³ΠΎΠ΅:

1. Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π Π°ΠΌΠΎΠ΄ΠΈΠ½. НачинаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Java.

2. Николай Π‘ΠΌΠΈΡ€Π½ΠΎΠ². Java 2: Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС.

3. ΠšΠ°Ρ€Ρ‚ΡƒΠ·ΠΎΠ² А. Π’. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Java.

4. Вязовик Н. А. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Java.

5. Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ. Автор Π½Π΅ ΠΈΠ·Π²Π΅ΡΡ‚Π΅Π½.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΈΠ½Ρ‚СрфСйсы

Π’ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Java API входят сотни классов. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ программист Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ добавляСт ΠΊ Π½ΠΈΠΌ дСсятки своих. Классов. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ классов становится Π½Π΅ΠΎΠ±ΠΎΠ·Ρ€ΠΈΠΌΡ‹ΠΌ. Π£ΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ классы ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Но Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ классов, ΠΊΡ€ΠΎΠΌΠ΅ стандартной, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ся Ρ‡Π°ΡΡ‚ΡŒΡŽ языка.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Java Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π² ΡΠ·Ρ‹ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ — ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (packages). ВсС классы Java Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌ. ΠšΡ€ΠΎΠΌΠ΅ классов ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΡΠ΅Π±Ρ интСрфСйсы ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (subpackages). ΠžΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ΡΡ дрСвовидная структура ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Π­Ρ‚Π° структура Π² Ρ‚очности отобраТаСтся Π½Π° ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. ВсС Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ class (содСрТащиС Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρ‹), ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚, хранятся Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. ΠŸΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ собраны Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ этого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎ пространство ΠΈΠΌΠ΅Π½ (namespace). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΈΠΌΠ΅Π½Π° классов, интСрфСйсов ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹. ИмСна Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ, Π½ΠΎ ΡΡ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ класс, интСрфСйс ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ сразу Π² Π΄Π²ΡƒΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…. Если Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° класса с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ‚ΠΎ ΠΈΠΌΡ класса уточняСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°: ΠΏΠ°ΠΊΠ΅Ρ‚.класс. Π’Π°ΠΊΠΎΠ΅ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½Π½ΠΎΠ΅ имя называСтся ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ класса.

ΠŸΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ ΠΈ Π΄Π»Ρ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ ΠΏΡ€Π°Π²Π°ΠΌ доступа ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ класса private, protected ΠΈ public Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½, «ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ» ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ доступа.

Если Ρ‡Π»Π΅Π½ класса Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ Π½ΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² private, protected, public, Ρ‚ΠΎ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊ Π½Π΅ΠΌΡƒ осущСствляСтся ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ доступ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ Ρ‡Π»Π΅Π½Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ любой ΠΌΠ΅Ρ‚ΠΎΠ΄ любого класса ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏ ΠΊ ΠΊΠ»Π°ΡΡΡƒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ — Ссли класс Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ public, Ρ‚ΠΎ Π²ΡΠ΅ Π΅Π³ΠΎ Ρ‡Π»Π΅Π½Ρ‹, Π΄Π°ΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅, public, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π½Ρ‹ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π°Π΄ΠΎ просто Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Java-Ρ„Π°ΠΉΠ»Π° с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ строку package имя;, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

package mypack;

Π’Π΅ΠΌ самым создаСтся ΠΏΠ°ΠΊΠ΅Ρ‚ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ mypack ΠΈ Π²ΡΠ΅ классы, записанныС Π² ΡΡ‚ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ mypack. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡ эту строку Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ исходного Ρ„Π°ΠΉΠ»Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ классы.

Имя ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Π° уточняСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, subpack, слСдуСт Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС исходного Ρ„Π°ΠΉΠ»Π° Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ;

package mypack. subpack;

ΠΈ Π²ΡΠ΅ классы этого Ρ„Π°ΠΉΠ»Π° ΠΈ Π²ΡΠ΅Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкой ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ subpack ΠΏΠ°ΠΊΠ΅Ρ‚Π° mypack.

МоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Π°, написав Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Ρ€ΠΎΠ΄Π΅

package mypack.subpack.sub;

ΠΈ Ρ‚. Π΄. сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ строка package имя; Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΈ ΡΡ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ пСрвая строка Ρ„Π°ΠΉΠ»Π°, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Java ΠΌΠΎΠΆΠ΅Ρ‚ сам ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ mypack, a Π² Π½Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ subpack, ΠΈ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π½ΠΈΡ… class-Ρ„Π°ΠΉΠ»Ρ‹ с Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°ΠΌΠΈ.

ΠŸΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° классов, А ΠΈ Π’ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: mypack. A, mypack.subpack.Π’.

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

com.sun.developer

Π”ΠΎ ΡΠΈΡ… ΠΏΠΎΡ€ ΠΌΡ‹ Π½ΠΈ Ρ€Π°Π·Ρƒ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ всСгда создаСт для Ρ‚Π°ΠΊΠΈΡ… классов бСзымянный ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ соотвСтствуСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π’ΠΎΡ‚ поэтому Ρƒ Π½Π°Ρ class-Ρ„Π°ΠΉΠ» всСгда оказывался Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρ‡Ρ‚ΠΎ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Java-Ρ„Π°ΠΉΠ».

БСзымянный ΠΏΠ°ΠΊΠ΅Ρ‚ слуТит ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ±Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… классов. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…. НапримСр, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов Java 2 API хранится Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… java, javax, org.omg. ΠŸΠ°ΠΊΠ΅Ρ‚ Java содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ applet, awt, beans, io, lang, math, net, rmi, security, sql, text, util ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ свои ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ°ΠΊΠ΅Ρ‚ создания графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π“Π˜ΠŸ) ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ java. awt содСрТит ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ color, datatransfer, dnd, event, font, geometry, image, print.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, состав ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² мСняСтся ΠΎΡ‚ Π²Π΅Ρ€ΡΠΈΠΈ ΠΊ Π²Π΅Ρ€ΡΠΈΠΈ.

ΠŸΡ€Π°Π²Π° доступа ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ класса Рассмотрим большой ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡƒΡΡ‚ΡŒ имССтся ΠΏΡΡ‚ΡŒ классов, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… Π² Π΄Π²ΡƒΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. П. 1.

Рис. П. 1. Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π½Π°ΡˆΠΈΡ… классов ΠΏΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌ

Π’ Ρ„Π°ΠΉΠ»Π΅ Base. java описаны Ρ‚Ρ€ΠΈ класса: inpi, Base ΠΈ ΠΊΠ»Π°ΡΡ Derivedpi, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΉ класс Base. Π­Ρ‚ΠΈ классы Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ pi. Π’ ΠΊΠ»Π°ΡΡΠ΅ Base ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ всСх Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ‚ΠΈΠΏΠΎΠ² доступа, Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… f () классов inp1 ΠΈ Derivedp1 сдСлана ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° доступа ΠΊΠΎ Π²ΡΠ΅ΠΌ полям класса Π²Π°Π·Π΅. НСудачныС ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ коммСнтариями. Π’ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ариях ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ сообщСния компилятора. Листинг 3.1 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ содСрТимоС этого Ρ„Π°ΠΉΠ»Π°.

Листинг П. 1. Π€Π°ΠΉΠ» Base. java с ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π° p1

package p1;

class Inp1{

public void f () {

Base b = new Base ();

// b. priv = 1; // «priv has private access in p1. Base»

b.pack = 1;

b.prot = 1;

b.publ = 1;

}

}

public class Base{

private int priv = 0;

int pack = 0;

protected int prot = 0;

public int publ = 0;

}

class Derivedpi extends Base{

public void f (Base a) {

// a. priv = 1; // «priv hΠ°s private access in pi. Base»

a.pack = 1;

a.prot = 1;

a.publ = 1;

// priv = 1; // «priv has private access in pi. Base»

pack = 1;

prot = 1;

publ = 1;

}

}

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π»ΠΈΡΡ‚ΠΈΠ½Π³Π° П. 1, Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ нСдоступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅, private, поля Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса.

Π’ Ρ„Π°ΠΉΠ»Π΅ Inp2. java описаны Π΄Π²Π° класса: Inp2 ΠΈ ΠΊΠ»Π°ΡΡ Derivedp2, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΉ класс Base. Π­Ρ‚ΠΈ классы находятся Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Ρ€2. Π’ ΡΡ‚ΠΈΡ… классах Ρ‚ΠΎΠΆΠ΅ сдСлана ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° обращСния ΠΊ ΠΏΠΎΠ»ΡΠΌ класса Base. НСудачныС ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ сообщСниями компилятора. Листинг П. 2 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ содСрТимоС этого Ρ„Π°ΠΉΠ»Π°.

Напомним, Ρ‡Ρ‚ΠΎ класс Base Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΏΡ€ΠΈ своСм описании Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ p1 ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ public, ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ€2 Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΅Π³ΠΎ Ρ‡Π»Π΅Π½Π°.

Листинг П. 2. Π€Π°ΠΉΠ» Inp2. java с ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ€2

package p2;

import pl. Base;

class Inp2{

public static void main (String[] args){

Base b = new Base ();

// b. priv = 1; // «priv has private access in pl. Base»

// b. pack = 1; // «pack is not public in pl. Base;

// cannot be accessed from outside package"

// b. prot = 1; //"" prot has protected access in pi. Base"

b.publ = 1;

}

}

class Derivedp2 extends Base{

public void, f (Base a){

// a. priv = 1; // «priv has private access in. p1. Base»

// a. pack = 1; // «pack, is not public in pi. Base; cannot

//be accessed from outside package"

// a. prot = 1; // «prot has protected access in p1. Base»

a.publ = 1;

// priv = 1; // «priv has private access in pi. Base»

// pack = 1; // «pack is not public in pi. Base; cannot

// be accessed from outside package"

prot = 1;

publ = 1;

super.prot = 1;

}

}

Π—Π΄Π΅ΡΡŒ, Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, доступ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π² Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΉ стСпСни.

Из Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ класса ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ, public, полям класса Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Из ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π΅Ρ‰Π΅ ΠΈ ΠΊ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌ, protected, полям, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ унаслСдованным нСпосрСдствСнно, Π° Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· экзСмпляр супСркласса.

ВсС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ относится Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΏΠΎΠ»ΡΠΌ, Π½ΠΎ ΠΈ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. ΠŸΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ всС сказанноС Π² Ρ‚Π°Π±Π». П. 1.

Π’Π°Π±Π»ΠΈΡ†Π° П. 1. ΠŸΡ€Π°Π²Π° доступа ΠΊ ΠΏΠΎΠ»ΡΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ класса

Класс

ΠŸΠ°ΠΊΠ΅Ρ‚

ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ‹

ВсС классы

private

" package"

protected

*

public

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ доступа ΠΊ protected-полям ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈΠ· Ρ‡ΡƒΠΆΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ.

Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΠΎ Ρ„Π°ΠΉΠ»Π°ΠΌ

Π’ΠΎ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ, Ρ‡Ρ‚ΠΎ class-Ρ„Π°ΠΉΠ»Ρ‹, содСрТащиС Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρ‹ классов, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ ΠΏΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ, Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ свои особСнности Π½Π° ΠΏΡ€ΠΎΡ†Π΅ΡΡ компиляции ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΠΌΡΡ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ. ΠŸΡƒΡΡ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ D: jdkl.3MyProgsch3 Π΅ΡΡ‚ΡŒ пустой ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ classes ΠΈ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° — Base. java ΠΈ Inp2. java, — содСрТимоС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π»ΠΈΡΡ‚ΠΈΠ½Π³Π°Ρ… П. 1 ΠΈ П. 2. Рис. П. 2 дСмонстрируСт структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΡƒΠΆΠ΅ послС компиляции.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ всю Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

1. Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ classes создаСм ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Ρ€1 ΠΈ Ρ€2.

2. ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌ Ρ„Π°ΠΉΠ» Base. java Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ€1 ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ Ρ€1 Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ.

3. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ Base. java, получая Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ€1 Ρ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π°: Base. class, Inpl. class, Derivedpl.class.

4. ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌ Ρ„Π°ΠΉΠ» Inp2java Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ€2.

5. Π‘Π½ΠΎΠ²Π° Π΄Π΅Π»Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ classes.

6. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ», указывая ΠΏΡƒΡ‚ΡŒ p2Inp2.java.

7. ЗапускаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ java p2. inp2.

ВмСсто шагов 2 ΠΈ 3 ΠΌΠΎΠΆΠ½ΠΎ просто ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ class-Ρ„Π°ΠΉΠ»Π° Π² Π»ΡŽΠ±ΠΎΠΌ мСстС, Π° ΠΏΠΎΡ‚ΠΎΠΌ пСрСнСсти ΠΈΡ… Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ pi. Π’ class-Ρ„Π°ΠΉΠ»Π°Ρ… Π½Π΅ Ρ…ранится никакая информация ΠΎ ΠΏΡƒΡ‚ях ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ.

Бмысл дСйствий 5 ΠΈ 6 Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ компиляции Ρ„Π°ΠΉΠ»Π° Inp2. java компилятор ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ класс p1. Base, Π° ΠΎΡ‚ыскиваСт ΠΎΠ½ Ρ„Π°ΠΉΠ» с ΡΡ‚ΠΈΠΌ классом ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ p1.Base.class, начиная ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ дСйствии 7 Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя класса.

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

1. Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ компилятор с ΠΊΠ»ΡŽΡ‡ΠΎΠΌd ΠΏΡƒΡ‚ΡŒ, указывая ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΏΡƒΡ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

javacd classes Base. java

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ создаст Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ classes ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ€1 ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ Ρ‚ΡƒΠ΄Π° Ρ‚Ρ€ΠΈ class-Ρ„Π°ΠΉΠ»Π°.

2. Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ компилятор с Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌclasspath ΠΏΡƒΡ‚ΡŒ, указывая ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΏΡƒΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ classes, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ pi:

javacclasspath classesd classes Inp2. java

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΡƒΡΡΡŒ ΠΊΠ»ΡŽΡ‡ΠΎΠΌd, создаст Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ classes ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ€2 ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ Ρ‚ΡƒΠ΄Π° Π΄Π²Π° class-Ρ„Π°ΠΉΠ»Π°, ΠΏΡ€ΠΈ создании ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ «Π·Π°Π³Π»ΡΠ΄Ρ‹Π²Π°Π»» Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ pi, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΡƒΡΡΡŒ ΠΊΠ»ΡŽΡ‡ΠΎΠΌclasspath.

3. Π”Π΅Π»Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ classes.

4. ЗапускаСм ΠΏΡ€ΠΎΡ„Π°ΠΌΠΌΡƒ java p2. inp2.

Рис. П. 2. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π° ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ IDE, Ρ‚ΠΎ Π²ΡΠ΅ эти дСйствия Π±ΡƒΠ΄ΡƒΡ‚ сдСланы Π±Π΅Π· вашСго участия.

На Ρ€ΠΈΡ. П. 2 ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° структура ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² послС компиляции.

Π˜ΠΌΠΏΠΎΡ€Ρ‚ классов ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкС листинга П. 2 Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ import. Для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½?

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ компилятор Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ классы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅, ΠΈΠΌΠ΅Π½Π½ΠΎ, Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Ρ„Π°ΠΉΠ»Π°. Для классов ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°. Π’ Π½Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ½ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅, ΠΈ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π»ΠΈΡΡ‚ΠΈΠ½Π³Π΅ П. 2 вмСсто Base ΠΏΠΎΠ»Π½ΠΎΠ΅ имя p1.Base.

Но Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Π΄Π»ΠΈΠ½Π½Ρ‹Π΅, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся классы часто, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΈΡˆΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ import, указывая компилятору ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° классов.

ΠŸΡ€Π°Π²ΠΈΠ»Π° использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° import ΠΎΡ‡Π΅Π½ΡŒ просты: ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ слово import ΠΈ, Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π», ΠΏΠΎΠ»Π½ΠΎΠ΅ имя класса, Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с Π·Π°ΠΏΡΡ‚ΠΎΠΉ. Бколько классов Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² import ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ся.

Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вторая Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° import — указываСтся имя ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π° Π²ΠΌΠ΅ΡΡ‚ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса ставится Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° *. Π­Ρ‚ΠΎΠΉ записью компилятору прСдписываСтся ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ вСсь ΠΏΠ°ΠΊΠ΅Ρ‚. Π’ Π½Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

import p1.*;

Напомним, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ классы, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ public. ΠŸΠ°ΠΊΠ΅Ρ‚ java. lang (стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов) просматриваСтся всСгда, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… import Π»ΠΈΠ±ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° классов.

ΠŸΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ import вводится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для удобства программистов ΠΈ ΡΠ»ΠΎΠ²ΠΎ «ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ» Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΉ классов.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ import Π½Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π΅Π½ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ прСпроцСссора include Π² Π‘/Π‘++. Он Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹.

Java-Ρ„Π°ΠΉΠ»Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ структуру исходного Ρ„Π°ΠΉΠ»Π° с Ρ‚Скстом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Java.

Β· Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ package.

Β· Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… строках ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ import.

Β· Π”Π°Π»Π΅Π΅ ΠΈΠ΄ΡƒΡ‚ описания классов ΠΈ ΠΈΠ½Ρ‚СрфСйсов.

Π•Ρ‰Π΅ Π΄Π²Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°.

Β· Π‘Ρ€Π΅Π΄ΠΈ классов Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ public-класс.

Β· Имя Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ класса, Ссли послСдний сущСствуСт.

ΠžΡ‚ΡΡŽΠ΄Π° слСдуСт, Ρ‡Ρ‚ΠΎ, Ссли Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π΅ΡΡ‚ΡŒ нСсколько ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… классов, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ….

БоглашСниС. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ класс, Ссли ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ся Π² Ρ„Π°ΠΉΠ»Π΅, ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

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

Π’ Java ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс Π’ ΠΈΠ»ΠΈ Π‘ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΉ сСмьи, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. П. 4, Π°. ВсС классы происходят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ «ΠΠ΄Π°ΠΌΠ°», ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° Оbject. Но Ρ‡Π°ΡΡ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ класс D ΠΎΡ‚ Π΄Π²ΡƒΡ… классов Π’ ΠΈ Π‘, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. П. 4, Π±. Π­Ρ‚ΠΎ называСтся мноТСствСнным наслСдованиСм (multiple inheritance). Π’ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠΌ наслСдовании Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ. Врудности Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, Ссли классы Π’ ΠΈ Π‘ ΡΠ°ΠΌΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Ρ‹ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса А, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. П. 4 Π². Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ «Ρ€ΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½ΠΎΠ΅» наслСдованиС.

Рис. П. 4. Π Π°Π·Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ наслСдования

ΠŸΡƒΡΡ‚ΡŒ Π² ΠΊΠ»Π°ΡΡΠ΅, А ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ f (), ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌΡΡ ΠΈΠ· Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса D. МоТСм Π»ΠΈ ΠΌΡ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ f () выполняСт Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ написано Π² ΠΊΠ»Π°ΡΡΠ΅ А, Ρ‚. Π΅. это ΠΌΠ΅Ρ‚ΠΎΠ΄ A. f ()? ΠœΠΎΠΆΠ΅Ρ‚, ΠΎΠ½ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² ΠΊΠ»Π°ΡΡΠ°Ρ… Π’ ΠΈ Π‘? Если Ρ‚Π°ΠΊ, Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ: B. f () ΠΈΠ»ΠΈ Π‘. f ()? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ экзСмпляры классов ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ этих экзСмпляров, Π½ΠΎ ΡΡ‚ΠΎ совсСм Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€.

Π’ Ρ€Π°Π·Π½Ρ‹Ρ… языках программирования этот вопрос Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° f ().

Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ языка Java Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΠ»ΠΈ мноТСствСнноС наслСдованиС Π²ΠΎΠΎΠ±Ρ‰Π΅. ΠŸΡ€ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ класса послС слова extends ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ имя супСркласса. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ уточнСния super ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ нСпосрСдствСнного супСркласса.

Но Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли всС-Ρ‚Π°ΠΊΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΏΡ€Π΅Π΄ΠΊΠΎΠ²? НапримСр, Ρƒ Π½Π°Ρ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ класс Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ Automobile, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ класс Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ² Truck ΠΈ ΠΊΠ»Π°ΡΡ Π»Π΅Π³ΠΊΠΎΠ²Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ Π‘Π°Π³. Но Π²ΠΎΡ‚ Π½Π°Π΄ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΈΠΊΠ°ΠΏ Pickup. Π­Ρ‚ΠΎΡ‚ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ свойства ΠΈ Π³Ρ€ΡƒΠ·ΠΎΠ²Ρ‹Ρ…, ΠΈ Π»Π΅Π³ΠΊΠΎΠ²Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ.

Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° конструкция языка Java— интСрфСйс. Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² Ρ€ΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½ΠΎΠ΅ наслСдованиС, Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΠΊΠΈ ООП выяснили, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ создаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ рСализация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π° Π½Π΅ ΠΈΡ… описаниС.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ (interface), Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ°, содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ константы ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±Π΅Π· ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ»Π°ΡΡΡ‹, ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ся Ρ‚ΠΎΠΆΠ΅ Π² class-Ρ„Π°ΠΉΠ»Ρ‹.

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

ПослС слова interface записываСтся имя интСрфСйса, .ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ слово extends ΠΈ ΡΠΏΠΈΡΠΎΠΊ интСрфСйсов-ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, интСрфСйсы ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΈΠ½Ρ‚СрфСйсов, образуя свою, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡƒΡŽ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² Π½Π΅ΠΉ допускаСтся мноТСствСнноС наслСдованиС интСрфСйсов. Π’ ΡΡ‚ΠΎΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π½Π΅Ρ‚ корня (ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ°).

Π—Π°Ρ‚Π΅ΠΌ, Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках, Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π»ΡŽΠ±ΠΎΠΌ порядкС константы ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΈΠ½Ρ‚СрфСйсС всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ абстрактныС, Π½ΠΎ ΡΠ»ΠΎΠ²ΠΎ abstract ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ Π½Π°Π΄ΠΎ. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ всСгда статичСскиС, Π½ΠΎ ΡΠ»ΠΎΠ²Π° static ΠΈ final ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

ВсС константы ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² ΠΈΠ½Ρ‚СрфСйсах всСгда ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹, Π½Π΅ Π½Π°Π΄ΠΎ Π΄Π°ΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ public.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊΡƒΡŽ схСму ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ для ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ:

interface Automobile{. .. }

interface Car extends Automobile{. .. }

interface Truck extends Automobile{. .. }

interface Pickup extends Car, Truck{. .. }

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, интСрфСйс — это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ набросок, эскиз. Π’ Π½Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Ρ‚ΡŒ.

Как ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс, Ссли ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ абстрактСн, Π² Π½Π΅ΠΌ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ ΠΈΠ½Ρ‚СрфСйс, Π° Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ (implementation). РСализация интСрфСйса — это класс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°ΡΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… интСрфСйсов. Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ класса послС Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ послС ΠΈΠΌΠ΅Π½ΠΈ Π΅Π³ΠΎ супСркласса, Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ, записываСтся слово implements ΠΈ, Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π° интСрфСйсов.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ:

interface Automobile{. .. }

interface Car extends Automobile!. .. }

class Truck implements Automobile!. .. }

class Pickup extends Truck implements Car{. .. }

ΠΈΠ»ΠΈ Ρ‚Π°ΠΊ:

interface Automobile{. .. }

interface Car extends Automobile{. .. }

interface Truck extends Automobile{. .. }

class Pickup implements Car, Truck{. .. }

РСализация интСрфСйса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΉ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса расписаны, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ — Π½Π΅Ρ‚. Вакая рСализация — абстрактный класс, Π΅Π³ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ abstract.

Как Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ»Π°ΡΡΠ΅ Π ickup ΠΌΠ΅Ρ‚ΠΎΠ΄ f (), описанный ΠΈ Π² ΠΈΠ½Ρ‚СрфСйсС саг, ΠΈ Π² ΠΈΠ½Ρ‚СрфСйсС Truck с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ сигнатурой? ΠžΡ‚Π²Π΅Ρ‚ простой — Π½ΠΈΠΊΠ°ΠΊ. Π’Π°ΠΊΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ нСльзя Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ»Π°ΡΡΠ΅ Pickup. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π°Π΄ΠΎ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

Π˜Ρ‚Π°ΠΊ, интСрфСйсы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСдствами Java чистоС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π΅ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°ΡΡΡŒ Π½Π° Π²ΠΎΠΏΡ€ΠΎΡΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

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

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ссылки Π½Π° ΠΈΠ½Ρ‚СрфСйсы. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ такая ссылка ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ интСрфСйса. Π’Π΅ΠΌ самым ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°.

Листинг П. 3 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ интСрфСйса «Ρ…ΠΎΡ€» Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ….

Листинг П. 3. ИспользованиС интСрфСйса для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°

interface Voice{

void voice ();

}

class Dog implements Voice{

public void voice (){

System.out.println («Gav-gav!»);

}

}

class Cat implements Voice{

public void voice (){

System.out.println («Miaou!»);

}

}

class Cow implements Voice{

public void voice (){

System.out.println («Mu-u-u!»);

}

}

public class Chorus{

public static void main (String[] args){

Voiced singer = new Voice[3];

singer[0] = new Dog ();

singer[1] = new Cat ();

singer[2] = new Cow ();

for (int i = 0; i < singer. length; i++)

singer[i]. voice ();

}

}

Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ интСрфСйс voice .

Π§Ρ‚ΠΎ ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ: абстрактный класс ΠΈΠ»ΠΈ интСрфСйс? На ΡΡ‚ΠΎΡ‚ вопрос Π½Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°.

Боздавая абстрактный класс, Π²Ρ‹ Π²ΠΎΠ»Π΅ΠΉ-Π½Π΅Π²ΠΎΠ»Π΅ΠΉ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ Π΅Π³ΠΎ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ классов, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ условиями ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ наслСдования ΠΈ Π΅Π΄ΠΈΠ½Ρ‹ΠΌ ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ — классом Оbject. ΠŸΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ интСрфСйсами, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ свободно ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму, Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡΡΡŒ ΠΎΠ± ΡΡ‚ΠΈΡ… ограничСниях.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π² Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½Ρ‹Ρ… классах ΠΌΠΎΠΆΠ½ΠΎ сразу Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². РСализуя ΠΆΠ΅ интСрфСйсы, Π²Ρ‹ ΠΎΠ±Ρ€Π΅Ρ‡Π΅Π½Ρ‹ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: всС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² интСрфСйсов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ, public, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ лишь Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ доступ, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйсов всСгда ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹.

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

НаконСц, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйсы просто для опрСдСлСния констант, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π»ΠΈΡΡ‚ΠΈΠ½Π³Π΅ П. 4.

Листинг П. 4. БистСма управлСния свСтофором

interface Lights{

int RED = 0;

int YELLOW = 1;

int GREEN = 2;

int ERROR = -1;

}

class Timer implements Lights{

private int delay;

private static int light = RED;

Timer (int sec)(delay = 1000 * sec;}

public int shift (){

int count = (light++) % 3;

try{

switch (count){

case RED: Thread. sleep (delay); break;

case YELLOW: Thread. sleep (delay/3); break;

case GREEN: Thread. sleep (delay/2); break;

}

}catch (Exception e){return ERROR;}

return count;

}

}

class TrafficRegulator{

private static Timer t = new Timer (1);

public static void main (String[] args){

for (int k = 0; k < 10; k++)

switch (t.shift ()){

case Lights. RED: System.out.println («Stop!»); break;

case Lights. YELLOW: System.out.println («Wait!»); break;

case Lights. GREEN: System.out.println («Go!»); break;

case Lights. ERROR: System.err.println («Time Error»); break;

default: System.err.println («Unknown light.»); return;

}

}

}

Π—Π΄Π΅ΡΡŒ, Π² ΠΈΠ½Ρ‚СрфСйсС Lights, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ константы, ΠΎΠ±Ρ‰ΠΈΠ΅ для всСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Класс Timer Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ этот интСрфСйс ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ константы Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊΠ°ΠΊ свои собствСнныС. ΠœΠ΅Ρ‚ΠΎΠ΄ shift () этого класса ΠΏΠΎΠ΄Π°Π΅Ρ‚ сигналы ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ свСтофору с Ρ€Π°Π·Π½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ†Π²Π΅Ρ‚Π°. Π—Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ осущСствляСт ΠΌΠ΅Ρ‚ΠΎΠ΄ sleep () класса Thread ΠΈΠ· ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ пСрСдаСтся врСмя Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ нуТдаСтся Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ try{} catch () {}.

Класс TrafficReguiator Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс Lights ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Lights. RED ΠΈ Ρ‚. Π΄. Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ константы RED, YELLOW ΠΈ GREEN ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠ²Π»ΡΡŽΡ‚ΡΡ статичСскими.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы

Π’ Ρ‚Π΅Π»Π΅ класса ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ описаниС Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ (nested) класса. А Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ классС ΠΌΠΎΠΆΠ½ΠΎ снова ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ (inner) класс ΠΈ Ρ‚. Π΄. МоТно Π»ΠΈ ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ внСшнСго класса? МоТно, для Ρ‚ΠΎΠ³ΠΎ это всС ΠΈ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Π»ΠΎΡΡŒ.

Β· А ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ экзСмпляр Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса, Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ экзСмпляры внСшнСго класса? НСт, нСльзя, сначала Π½Π°Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ экзСмпляр внСшнСго класса, ΠΌΠ°Ρ‚Ρ€Π΅ΡˆΠΊΠ° вСдь!

Β· А Π΅ΡΠ»ΠΈ экзСмпляров внСшнСго класса нСсколько, ΠΊΠ°ΠΊ ΡƒΠ·Π½Π°Ρ‚ΡŒ, с ΠΊΠ°ΠΊΠΈΠΌ экзСмпляром внСшнСго класса Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ экзСмпляр Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса? Имя экзСмпляра Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса уточняСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ связанного с Π½ΠΈΠΌ экзСмпляра внСшнСго класса. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ создании Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ экзСмпляра опСрация new Ρ‚ΠΎΠΆΠ΅ уточняСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ внСшнСго экзСмпляра.

ВсС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы-Ρ‡Π»Π΅Π½Ρ‹ класса (member classes), описанныС Π²Π½Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ классы (local classes), описанныС Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ/ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΎΠ². Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ классы, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ся Ρ‡Π»Π΅Π½Π°ΠΌΠΈ класса.

ΠšΠ»Π°ΡΡΡ‹-Ρ‡Π»Π΅Π½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ статичСским ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ static. ПовСдСниС статичСских классов-Ρ‡Π»Π΅Π½ΠΎΠ² Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΎΡ‚личаСтся ΠΎΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… классов, отличаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚Π°ΠΊΠΈΠΌ классам. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ классами Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня (nestee tep-level classes), хотя статичСскиС классы-Ρ‡Π»Π΅Π½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π°. Π’ Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ статичСскиС Ρ‡Π»Π΅Π½Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ классы вмСстС с ΠΎΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ классом.

ВсС нСстатичСскиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ (inner). Π’ Π½ΠΈΡ… нСльзя ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ статичСскиС Ρ‡Π»Π΅Π½Ρ‹.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ классы, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, извСстны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π±Π»ΠΎΠΊΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹. Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ бСзымянными (anonymous classes).

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

Листинг Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы

class Nested{

static private int pr; // ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ pr ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½a статичСской

// Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊ Π½Π΅ΠΉ Π±Ρ‹Π» доступ ΠΈΠ· ΡΡ‚атичСских классов, А ΠΈ ΠΠ’

String s = «Member of Nested» ;

// Π’ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ статичСский класс.

static class .А{ // ПолноС имя этого класса — Nested. A

private int a=pr;

String s = «Member of A» ;

// Π’ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡŒΠΌ класс, А Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ статичСский класс

static class AB{ // ПолноС имя класса — Nested.А.АВ

private int ab=pr;

String s = «Member of AB» ;

}

}

//Π’ класс Nested Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ нСстатичСский класс

class Π’{ // ПолноС имя этого класса — Nested. Π’

private int b=pr;

String s = «Member of B» ;

// Π’ ΠΊΠ»Π°ΡΡ Π’ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ класс

class Π’Π‘{ // ПолноС имя класса — Nested.Π’.Π’Π‘

private int bc=pr;

String s = «Member of Π’Π‘» ;

}

void f (final int i){ // Π‘Π΅Π· слова final ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ i ΠΈ j

final int j = 99; // нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ классС D

class D{ // Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс D ΠΈΠ·Π²Π΅ΡΡ‚Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ f ()

private int d=pr;

String s = «Member of D» ;

void pr (){

// ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ «s»

System.out.println (s + (i+j)); // «s» эквивалСнтно «this.s»

System.out.println (B.this.s);

System.out.println (Nested.this.s);

// System.out.println (AB.this.s); // НСт доступа

// System.out.println (A.this.s); // НСт доступа

}

}

D d = new D (); // ΠžΠ±ΡŠΠ΅ΠΊΡ‚ опрСдСляСтся Ρ‚ΡƒΡ‚ ΠΆΠ΅, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ f ()

d.pr (); // ΠžΠ±ΡŠΠ΅ΠΊΡ‚ извСстСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ f ()

}

}

void m (){

new Object (){ // БоздаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ бСзымянного класса,

// указываСтся конструктор Π΅Π³ΠΎ супСркласса

private int e = pr;

void g (){

System.out.println («From g ()) ;

}

}.g (); // Π’ΡƒΡ‚ ΠΆΠ΅ выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

}

}

public class NestedClasses{

public static void main (String[] args){

Nested nest = new Nested (); // ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ

// Ρ‚Ρ€ΠΈ ΠΌΠ°Ρ‚Ρ€Π΅ΡˆΠΊΠΈ

Nested.A theA = nest. new A (); // ПолноС имя класса ΠΈ ΡƒΡ‚очнСнная

// опСрация new. Но ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса

Nested.A.AB theAB = theA. new AB (); // Π’Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ

// new уточняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ

Nested.Π’ theB = nest. new B (); // Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΌΠ°Ρ‚Ρ€Π΅ΡˆΠΊΠ°

Nested.Π’.Π’Π‘ theBC = theB. new BC ();

theB.f (999); // ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

nest.m ();

}

}

Π”Π°Π΄ΠΈΠΌ пояснСния.

Β· Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, доступ ΠΊ ΠΏΠΎΠ»ΡΠΌ внСшнСго класса Nested Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΎΡ‚ΠΎΠ²ΡΡŽΠ΄Ρƒ, Π΄Π°ΠΆΠ΅ ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌΡƒ полю pr. ИмСнно для этого Π² Java ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ конструкции Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π½ΠΎ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ†Ρ‹ с ΠΊΠΎΠ½Ρ†Π°ΠΌΠΈ.

Β· Π―Π·Ρ‹ΠΊ Java позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π° Π² Ρ€Π°Π·Π½Ρ‹Ρ… областях видимости — ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡƒΡ‚ΠΎΡ‡Π½ΡΡ‚ΡŒ константу this ΠΈΠΌΠ΅Π½Π΅ΠΌ класса: Nested. this, Π’.this.

Β· Π’ Π±Π΅Π·Ρ‹ΠΌΡΠ½Π½ΠΎΠΌ классС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ конструктора, вСдь имя конструктора Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ класса, — ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя супСркласса, Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это класс object. ВмСсто конструктора Π² Π±Π΅Π·Ρ‹ΠΌΡΠ½Π½ΠΎΠΌ классС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±Π»ΠΎΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ экзСмпляра.

Β· НСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса, Π½Π΅ ΡΠΎΠ·Π΄Π°Π² ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ экзСмпляр внСшнСго класса, — ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°Ρ…ΠΎΠ²Π°Ρ‚ΡŒ это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ new ΠΈΠΌΠ΅Π½Π΅ΠΌ экзСмпляра внСшнСго класса— nest. new, theA. new, theB.new.

Β· ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ экзСмпляра указываСтся ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса, Π½ΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ new записываСтся просто конструктор класса.

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

Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классов сильно услоТнило синтаксис ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π΄Π°Ρ‡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ языка.

МоТно Π»ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы? МоТно.

Β· Как ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ супСркласса? ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° super уточняСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ супСркласса, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ константС this.

Β· А ΠΌΠΎΠ³ΡƒΡ‚ Π»ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… классов? ΠœΠΎΠ³ΡƒΡ‚.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классов станСт понятнСС, Ссли ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ с Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°ΠΌΠΈ создал компилятор:

Β· Nested$l$D.class — Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс ΠΎ, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π² ΠΊΠ»Π°ΡΡ Nested;

Β· NestedSl. class — бСзымянный класс;

Β· Nested$A$AB.class — класс Nested.A.AB;

Β· Nested$A.class — класс Nested. А;

Β· Nested$B$BC.class — класс Nested.B.BC;

Β· NestedSB. class — класс Nested. B;

Β· Nested. class — внСшний класс Nested;

Β· NestedClasses. class — класс с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ main ().

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Ρ€Π°Π·Π»ΠΎΠΆΠΈΠ» ΠΌΠ°Ρ‚Ρ€Π΅ΡˆΠΊΠΈ ΠΈ, ΠΊΠ°ΠΊ всСгда, создал ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса. ΠŸΡ€ΠΈ этом, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Ρ… нСдопустимы Ρ‚ΠΎΡ‡ΠΊΠΈ, компилятор Π·Π°ΠΌΠ΅Π½ΠΈΠ» ΠΈΡ… Π·Π½Π°ΠΊΠ°ΠΌΠΈ Π΄ΠΎΠ»Π»Π°Ρ€Π°. Для бСзымянного класса компилятор ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» имя. Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс компилятор ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΠ» Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ.

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ исходного ΠΊΠΎΠ΄Π°. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классах. Она Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ внСшними классами. Для взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классов компилятор вставляСт Π² Π½ΠΈΡ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ поля. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… классах ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ константы ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‚. Π΅. ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ словом final. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина просто Π½Π΅ Π΄ΠΎΠ³Π°Π΄Π°Π΅Ρ‚ся ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы private, всС Ρ€Π°Π²Π½ΠΎ ΠΎΠ½ΠΈ выходят Π½Π° ΡΠ°ΠΌΡ‹ΠΉ внСшний ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

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

Π’ ΠΊΠ°ΠΊΠΈΡ… ΠΆΠ΅ случаях ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы? Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ООП вопрос ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классов Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ рассмотрСнии ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ «Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ» ΠΈ «ΡΠ²Π»ΡΡ‚ΡŒΡΡ» .

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ «Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ» ΠΈ «ΡΠ²Π»ΡΡ‚ΡŒΡΡ»

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ Π½Π°Ρ появились Π΄Π²Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов. ΠžΠ΄Π½Ρƒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ наслСдованиС классов, Π΄Ρ€ΡƒΠ³ΡƒΡŽ — Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ классов.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ², ΠΊΠ°ΠΊΠΈΠ΅ классы Π±ΡƒΠ΄ΡƒΡ‚ написаны Π² Π²Π°ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΈ ΡΠΊΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚, ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ взаимодСйствиС классов? Π’Ρ‹Ρ€Π°ΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ‹ΡˆΠ½ΠΎΠ΅ гСнСалогичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ классов-наслСдников ΠΈΠ»ΠΈ Ρ€Π°ΡΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€Π΅ΡˆΠΊΡƒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классов?

ВСория ООП совСтуСт ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ находятся ваши классы P ΠΈ Q — Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ «ΠΊΠ»Π°ΡΡ Q ΡΠ²Π»ΡΠ΅Ρ‚ся экзСмпляром класса P» («a class Q is a class Ρ€») ΠΈΠ»ΠΈ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ «ΠΊΠ»Π°ΡΡ Q — Ρ‡Π°ΡΡ‚ΡŒ класса P» («a class Q has a class P»).

НапримСр: «Π‘ΠΎΠ±Π°ΠΊΠ° являСтся ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹ΠΌ» ΠΈΠ»ΠΈ «Π‘ΠΎΠ±Π°ΠΊΠ° — Ρ‡Π°ΡΡ‚ΡŒ ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ³ΠΎ»? Ясно, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€Π½ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ «is-a», поэтому ΠΌΡ‹ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ класс Dog ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ класса Pet.

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ «is-a» — это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ «ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅-дСтализация», ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ большСй ΠΈΠ»ΠΈ мСньшСй абстракции, ΠΈ Π΅ΠΌΡƒ соотвСтствуСт наслСдованиС классов.

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ «has-a» — это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ «Ρ†Π΅Π»ΠΎΠ΅-Ρ‡Π°ΡΡ‚ΡŒ», Π΅ΠΌΡƒ соотвСтствуСт Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 3. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² (callback) ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСн Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ программист Π·Π°Π΄Π°Π΅Ρ‚ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° происходит Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ событиС. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, Ссли Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚Π° конкрСтная ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€Π°Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ мСню.

Рассмотрим ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ. ΠŸΠ°ΠΊΠ΅Ρ‚ java. swing содСрТит класс Timer, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для отсчСта ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. НапримСр, Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ прСдусмотрСны часы, Ρ‚ΠΎ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса Timer, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚ часов. Устанавливая Ρ‚Π°ΠΉΠΌΠ΅Ρ€, ΠΌΡ‹ Π·Π°Π΄Π°Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ Π΅Π³ΠΎ истСчСнии.

Как ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ? Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования задаСтся имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ пСриодичСски Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ.

ΠšΠ»Π°ΡΡΡ‹ ΠΈΠ· ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ класса. ПослС этого Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° — Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Ρ‡Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ нСсти с ΡΠΎΠ±ΠΎΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π—Π½Π°Ρ‡ΠΈΡ‚, Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ. Для этого Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ интСрфСйс ActionListener ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° java.awt.event.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит этот интСрфСйс

public interface ActionListener

{

void actionPerformed (ActionEvent event);

}

По ΠΈΡΡ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ actionPerformed.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡƒΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10 сСкунд Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° ΡΠΊΡ€Π°Π½ сообщСниС «Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя », сопровоТдаСмоС Π·Π²ΡƒΠΊΠΎΠ²Ρ‹ΠΌ сигналом. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс ActionListener. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° actionPerformed.

class Timerprinter implements ActionListener

{

public void actionPerformed (ActionEvent event)

{

Date now= new Date ();

System.out.println («Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя:» + now);

Toolkit.getDefaultToolkit ().bΠ΅ep ();

}

}

Π—Π°Ρ‚Π΅ΠΌ слСдуСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ конструктору класса Timer.

ActionListener listener=new TimerPrinter ();

Timer t=new Timer (10 000, listener);

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

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса ActionListener

Запуск Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

t.start ();

ΠšΠ°ΠΆΠ΄Ρ‹Π΅ 10 сСкунд Π½Π° ΡΠΊΡ€Π°Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ сообщСниС ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ Π»ΠΈΡΡ‚ΠΈΠ½Π³Π΅ 6.2. ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ описанный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

import java.awt.*;

import java.awt.event*;

import javax.swing.*;

import javax.swing.Timer*; // Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ с ΠΊΠ»Π°ΡΡΠΎΠΌ javax.util.Timer

public class TimerTest

{

public static void main (string[ ] args)

{

ActionListener listener= new TimerPrinter ();

// Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10 сСк.

Timer t=new Timer (10 000, listener);

t.start ();

JOptionPΠ°ne.showMessageDialog (null,"Π’Ρ‹Ρ…ΠΎΠ΄?");

System.exit (0);

}

}

class Timerprinter implements ActionListener

{

public void actionPerformed (ActionEvent event)

{

Date now= new Date ();

System.out.println («Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя:» + now);

Toolkit.getDefaultToolkit ().bΠ΅ep ();

}

}

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ