Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° JavaΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 27

Автор Н.А. Вязовик

Класс Class являСтся мСтаклассом для всСх классов Java. Когда JVM Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ„Π°ΠΉΠ» .class, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π² памяти создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Class, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ это описаниС.

НапримСр, Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ строка


Point p=new Point(1,2);


Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² систСмС созданы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹:


1. ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Point, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΡ‡ΠΊΡƒ (1,2);

2. ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Class, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ класс Point;

3. ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Class, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ класс Object. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ класс Point наслСдуСтся ΠΎΡ‚ Object, Π΅Π³ΠΎ описаниС Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ;

4. ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Class, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ класс Class. Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Java-класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ ΠΏΠΎ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ.


Одно ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ класса Class ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ рассмотрСно – использованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° getClass() класса Object. Если ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ послСдний ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ:


Class cl=p.getClass();

// это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β„–2 ΠΈΠ· списка

Class cl2=cl.getClass();

// это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β„–4 ΠΈΠ· списка

Class cl3=cl2.getClass();

// ΠΎΠΏΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β„–4


Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ cl2==cl3 Π²Π΅Ρ€Π½ΠΎ.


Π”Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ класса Class Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ примСнСния Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ reflection.

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

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

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… – ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ‚Π΅ΠΌ курса. НСвозмоТно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΡ…. Π’ΠΎΡ‚ список Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π³Π΄Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΡ‹:


* объявлСниС Ρ‚ΠΈΠΏΠΎΠ²;

* созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²;

* ΠΏΡ€ΠΈ объявлСнии ΠΏΠΎΠ»Π΅ΠΉ – Ρ‚ΠΈΠΏ поля;

* ΠΏΡ€ΠΈ объявлСнии ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² – Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;

* ΠΏΡ€ΠΈ объявлСнии конструкторов – Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹;

* ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ привСдСния Ρ‚ΠΈΠΏΠΎΠ²;

* ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ instanceof ;

* объявлСниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…;

* ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ – ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок, import -выраТСния ΠΈ Ρ‚.Π΄.


ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ ΠΈ ссылочными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ дальшС ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ курса. Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Java даст основу для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ излоТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² – ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈ абстрактных классов, интСрфСйсов ΠΈ массивов. ПослС привСдСния Ρ‚ΠΈΠΏΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ описаны связи ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΈΠΏΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ Π΅Π΅ значСния.

Π’ обсуТдСнии Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ вСрсии Java 1.5 ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌΠΏΠ»Π΅ΠΉΡ‚Ρ‹ (templates), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сущСствСнно Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ понятия Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Ссли Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΎΠΉΠ΄ΡƒΡ‚ Π² стандарт языка.

Π’ Π»Π΅ΠΊΡ†ΠΈΠΈ Π±Ρ‹Π»ΠΎ рассказано ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Java являСтся строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ опрСдСляСтся ΡƒΠΆΠ΅ компилятором. Π­Ρ‚ΠΎ позволяСт сущСствСнно ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ качСство ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ программистами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ВсС Ρ‚ΠΈΠΏΡ‹ Π² Java дСлятся Π½Π° Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ – фиксированныС простыС, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅, Ρ‚ΠΈΠΏΡ‹ (8 Ρ‚ΠΈΠΏΠΎΠ²) ΠΈ многочислСнная Π³Ρ€ΡƒΠΏΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (классов). ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… своСго Ρ‚ΠΈΠΏΠ°. БсылочныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ хранят ссылку Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ совмСстимого Ρ‚ΠΈΠΏΠ°. Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null, Π½Π΅ указывая Π½ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. JVM подсчитываСт количСство ссылок Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ автоматичСской сборки мусора для удалСния Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π‘Ρ‹Π»ΠΈ рассмотрСны ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Они Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ΡΡ трСмя основными ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ – имя, Ρ‚ΠΈΠΏ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π›ΡŽΠ±Π°Ρ пСрСмСнная Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ объявлСна ΠΈ ΠΏΡ€ΠΈ этом ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ использованиС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° final.

ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ состоят ΠΈΠ· пяти цСлочислСнных, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π΄Π²ΡƒΡ… Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ. ЦСлочислСнныС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ограничСния, связанныС с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‹Π»ΠΈ рассмотрСны всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π°Π΄ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ΠΈ тонкости ΠΈΡ… использования.

Π—Π°Ρ‚Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈΡΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, способы ΠΈΡ… создания ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ Π½Π°Π΄ Π½ΠΈΠΌΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ дСйствия, Π² частности ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° instanceof. Π”Π°Π»Π΅Π΅ Π±Ρ‹Π»ΠΈ рассмотрСны самыС Π³Π»Π°Π²Π½Ρ‹Π΅ классы Π² Java – Object, Class, String.


5. ЛСкция: ИмСна. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹

Π’ этой Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²Π΅ Ρ‚Π΅ΠΌΡ‹ – систСма имСнования элСмСнтов языка Π² Java ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (packages), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… языков. ΠŸΠΎΡ‡Ρ‚ΠΈ всС конструкции Π² Java ΠΈΠΌΠ΅ΡŽΡ‚ имя для обращСния ΠΊ Π½ΠΈΠΌ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… частСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. По Ρ…ΠΎΠ΄Ρƒ излоТСния вводятся Π²Π°ΠΆΠ½Ρ‹Π΅ понятия, Π² частности – ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΈΠΌΠ΅Π½ΠΈ. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… областСй Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΈΠΌΠ΅Π½. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ риск возникновСния ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ситуаций, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ соглашСния ΠΏΠΎ имСнованию, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Sun. ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΡƒ классов ΠΈ становятся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΡ€ΠΈ создании Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСм. Вводится Π²Π°ΠΆΠ½ΠΎΠ΅ понятиС модуля компиляции ΠΈ описываСтся Π΅Π³ΠΎ структура.


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

ИмСна (names) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для доступа ΠΊ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ (declared) Ρ€Π°Π½Π΅Π΅ "ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ", "элСмСнтам", "конструкциям" языка (всС эти слова-синонимы Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ здСсь Π² ΠΈΡ… ΠΎΠ±Ρ‰Π΅ΠΌ смыслС, Π° Π½Π΅ ΠΊΠ°ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ООП, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€). ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π΅Π΅, Π² Java ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π°:


* ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ;

* классы;

* интСрфСйсы;

* элСмСнты (member) ссылочных Ρ‚ΠΈΠΏΠΎΠ²:

* поля;

* ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹;

* Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ классы ΠΈ интСрфСйсы;

* Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹:

* ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²;

* конструкторов;

* ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ошибок;

Π»* ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.


БоотвСтствСнно, всС ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ постСпСнно Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ курса. Π’Π°ΠΊ ΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ конструкторы

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

ИмСна

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΈ составныС ΠΈΠΌΠ΅Π½Π°. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹

ИмСна Π±Ρ‹Π²Π°ΡŽΡ‚ простыми (simple), состоящими ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° (ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π²ΠΎ врСмя объявлСния) ΠΈ составными (qualified), состоящими ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. Для пояснСния этих Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ понятиС.

Π£ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ссылочных Ρ‚ΠΈΠΏΠΎΠ² (классов, интСрфСйсов, массивов) Π΅ΡΡ‚ΡŒ элСмСнты (members). Доступ ΠΊ элСмСнтам осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния, состоящСго ΠΈΠ· ΠΈΠΌΠ΅Π½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ класса, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

Π”Π°Π»Π΅Π΅ классы ΠΈ интСрфСйсы Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ Ρ‚ΠΈΠΏ (type).

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ содСрТащиСся Π² Π½Π΅ΠΌ классы ΠΈ интСрфСйсы, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ составноС имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ располагаСтся, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π΅Π³ΠΎ собствСнноС простоС имя. НапримСр, составноС имя основного ΠΏΠ°ΠΊΠ΅Ρ‚Π° языка Java – java.lang (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ простоС имя этого ΠΏΠ°ΠΊΠ΅Ρ‚Π° lang, ΠΈ ΠΎΠ½ находится Π² ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ java ). Π’Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ reflection, которая ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»Π°ΡΡŒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ…. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° reflect, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, составноС – java.lang.reflect.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ имя классов ΠΈ интСрфСйсов даСтся ΠΏΡ€ΠΈ объявлСнии, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Object, String, Point. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ составноС имя Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², Π½Π°Π΄ΠΎ ΠΊ составному ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится Ρ‚ΠΈΠΏ, Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ простоС имя Ρ‚ΠΈΠΏΠ°. НапримСр, java.lang.Object, java.lang.reflect.Method ΠΈΠ»ΠΈ com.myfirm.MainClass. Бмысл послСднСго выраТСния Ρ‚Π°ΠΊΠΎΠ²: сначала ΠΈΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ com, Π·Π°Ρ‚Π΅ΠΌ ΠΊ Π΅Π³ΠΎ элСмСнту – Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ myfirm , Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊ элСмСнту ΠΏΠ°ΠΊΠ΅Ρ‚Π° myfirm – классу MainClass. Π—Π΄Π΅ΡΡŒ com.myfirm – составноС имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π³Π΄Π΅ Π»Π΅ΠΆΠΈΡ‚ класс MainClass, Π° MainClass β€” простоС имя. БоставляСм ΠΈΡ… ΠΈ раздСляСм Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ – получаСтся ΠΏΠΎΠ»Π½ΠΎΠ΅ имя класса com.myfirm.MainClass.

Для ссылочных Ρ‚ΠΈΠΏΠΎΠ² элСмСнтами ΡΠ²Π»ΡΡŽΡ‚ΡΡ поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ (классы ΠΈ интСрфСйсы). Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ нСпосрСдствСнно ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² классС, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΏΠΎ наслСдству ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классов ΠΈ интСрфСйсов, Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ имя элСмСнтов Ρ‚Π°ΠΊΠΆΠ΅ даСтся ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. НапримСр, toString(), PI, InnerClass. БоставноС имя получаСтся ΠΏΡƒΡ‚Π΅ΠΌ объСдинСния простого ΠΈΠ»ΠΈ составного ΠΈΠΌΠ΅Π½ΠΈ Ρ‚ΠΈΠΏΠ°, ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° с ΠΈΠΌΠ΅Π½Π΅ΠΌ элСмСнта. НапримСр, ref.toString(), java.lang.Math.PI, OuterClass.InnerClass. Π”Ρ€ΡƒΠ³ΠΈΠ΅ обращСния ΠΊ элСмСнтам ссылочных Ρ‚ΠΈΠΏΠΎΠ² ΡƒΠΆΠ΅ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»ΠΈΡΡŒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ….

ИмСна ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ рассмотрСли простыС ΠΈ составныС ΠΈΠΌΠ΅Π½Π°, ΡƒΡ‚ΠΎΡ‡Π½ΠΈΠΌ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ (Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ это Π²ΠΈΠ΄ лСксСмы) ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ простоС имя состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, Π° составноС - ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ…. Однако Π½Π΅ всякий ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΈΠΌΠ΅Π½ΠΈ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ объявлСния (declaration) ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π΅Ρ‰Π΅ Π½Π΅ являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΎΠ½ становится ΠΈΠΌΠ΅Π½Π΅ΠΌ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ появлСния Π² ΠΊΠΎΠ΄Π΅ Π² мСстС объявлСния.

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