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

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

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

// ОбъявляСм класс Parent

class Parent {

int x;

}

// ОбъявляСм класс Child ΠΈ наслСдуСм

// Π΅Π³ΠΎ ΠΎΡ‚ класса Parent

class Child extends Parent {

int y;

}

// ОбъявляСм Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ наслСдника

// класса Parent - класс Child2

class Child2 extends Parent {

int z;

}


Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ классС объявлСно ΠΏΠΎΠ»Π΅ с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ это ΠΏΠΎΠ»Π΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°Π±ΠΎΡ€Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… свойств, присущих Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ.

Π’Ρ€ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… класса ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса Parent ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΠ»Π΅ΠΌ x, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылки Ρ‚ΠΈΠΏΠ° Parent ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса Child ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ»Π΅ΠΌ y ΠΈ ΠΏΠΎΠ»Π΅ΠΌ x, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎ наслСдству ΠΎΡ‚ класса Parent. Π‘Ρ‚Π°Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ, Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ссылки Ρ‚ΠΈΠΏΠ° Child ΠΈΠ»ΠΈ Parent. Π’Ρ‚ΠΎΡ€ΠΎΠΉ случай ΡƒΠΆΠ΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ:


Parent p = new Child();


ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠΉ ссылки p ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ лишь ΠΊ полю x созданного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ПолС y нСдоступно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ компилятор, провСряя ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ выраТСния p.y, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ссылка p Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Child Π²ΠΎ врСмя исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Он Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ лишь Ρ‚ΠΈΠΏ самой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° ΠΎΠ½Π° объявлСна ΠΊΠ°ΠΊ Parent, Π½ΠΎ Π² этом классС Π½Π΅Ρ‚ поля y, Ρ‡Ρ‚ΠΎ ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции.

Аналогично, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса Child2 ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ»Π΅ΠΌ z ΠΈ ΠΏΠΎΠ»Π΅ΠΌ x, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎ наслСдству ΠΎΡ‚ класса Parent. Π—Π½Π°Ρ‡ΠΈΡ‚, Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ссылки Ρ‚ΠΈΠΏΠ° Child2 ΠΈΠ»ΠΈ Parent.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ссылки Ρ‚ΠΈΠΏΠ° Parent ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ любого ΠΈΠ· Ρ‚Ρ€Π΅Ρ… рассматриваСмых Ρ‚ΠΈΠΏΠΎΠ², Π° ссылки Ρ‚ΠΈΠΏΠ° Child ΠΈ Child2 - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ ссылочных Ρ‚ΠΈΠΏΠΎΠ² Π½Π° основС Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° наслСдования.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΊ ΠΌΠ΅Π½Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ, Ρ‚.Π΅. ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ Π΄Π΅Ρ‚Π΅ΠΉ ΠΊ родитСлям. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚ любого наслСдника ( Child, Child2 ) ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ ( Parent ) Π΅ΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ Ρ‚ΠΈΠΏΡƒ. Подобно ΡΠ»ΡƒΡ‡Π°ΡŽ с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, этот ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ производится самой JVM ΠΏΡ€ΠΈ нСобходимости ΠΈ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π΅Π½ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ всСгда ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ: всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½ΠΎΠΌΡƒ ΠΎΡ‚ наслСдника, ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ Π΅Π³ΠΎ родитСля.


Parent p1=new Child();

Parent p2=new Child2();


Π’ ΠΎΠ±Π΅ΠΈΡ… строках ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ° Parent присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, происходит ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ производится автоматичСски ΠΈ всСгда ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ с самим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»Π΅ y класса Child Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ нСдоступно, это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ исчСзло. Π’Π°ΠΊΠΎΠ΅ сущСствСнноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ структуры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Он Π±Ρ‹Π» ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ ΠΎΡ‚ класса Child ΠΈ сохраняСт всС Π΅Π³ΠΎ свойства. ИзмСнился лишь Ρ‚ΠΈΠΏ ссылки, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Π­Ρ‚Ρƒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ условно ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с рассматриваниСм Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ΄Π·ΠΎΡ€Π½ΡƒΡŽ Ρ‚Ρ€ΡƒΠ±Ρƒ. Если ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΎΡ‚ Ρ‚Ρ€ΡƒΠ±Ρ‹ с большим ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π±ΠΎΠ»Π΅Π΅ слабой, Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ станСт мСньшС, Π½ΠΎ сам ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½ΠΈΠΊΠ°ΠΊ ΠΎΡ‚ этого Π½Π΅ измСнится.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСобразования ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΌΠΈ:


* ΠΎΡ‚ класса A ΠΊ классу B, Ссли A наслСдуСтся ΠΎΡ‚ B (Π²Π°ΠΆΠ½Ρ‹ΠΌ частным случаСм являСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚ любого ссылочного Ρ‚ΠΈΠΏΠ° ΠΊ Object );

* ΠΎΡ‚ null -Ρ‚ΠΈΠΏΠ° ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ.


Π’Ρ‚ΠΎΡ€ΠΎΠΉ случай ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ:


Parent p=null;


ΠŸΡƒΡΡ‚Π°Ρ ссылка null Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ссылочным Ρ‚ΠΈΠΏΠΎΠΌ, поэтому ΠΈΠ½ΠΎΠ³Π΄Π° говорят ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ null -Ρ‚ΠΈΠΏΠ΅. Однако Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ.

Π‘ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ссылочных Ρ‚ΠΈΠΏΠΎΠ² (интСрфСйсов ΠΈ массивов) этот список Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ.

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ наслСдования Π²Π½ΠΈΠ·, ΠΊ наслСдникам, являСтся суТСниСм. НапримСр, для рассматриваСмого случая, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ ссылки Ρ‚ΠΈΠΏΠ° Parent, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Ρ€Π΅Ρ… классов, ΠΊ ссылкС Ρ‚ΠΈΠΏΠ° Child, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ лишь ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… классов, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, являСтся суТСниСм. Π’Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ. Если ссылка Ρ‚ΠΈΠΏΠ° Parent ссылаСтся Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Parent ΠΈΠ»ΠΈ Child2, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Child Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, вСдь Π² ΠΎΠ±ΠΎΠΈΡ… случаях ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅ΠΌ y, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ объявлСно Π² классС Child. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ суТСнии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ провСсти Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. JVM Π²ΠΎ врСмя исполнСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°. Если ΠΎΠ½ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ. Если ΠΆΠ΅ Π½Π΅Ρ‚ - Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка.


Parent p=new Child();

Child c=(Child)p;

// ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ.

Parent p2=new Child2();

Child c2=(Child)p2;

// Π²ΠΎ врСмя исполнСния Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка!


Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π»ΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ instanceof:


Parent p=new Child();

if (p instanceof Child) {

Child c = (Child)p;

}

Parent p2=new Child2();

if (p2 instanceof Child) {

Child c = (Child)p2;

}

Parent p3=new Parent();

if (p3 instanceof Child) {

Child c = (Child)p3;

}


Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ошибок Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ осущСствлСно. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ случаях условия ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ лишь ΠΎΠ΄Π½ΠΎ ΡΡƒΠΆΠ°ΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅:


ΠΎΡ‚ класса A ΠΊ классу B, Ссли B наслСдуСтся ΠΎΡ‚ A (Π²Π°ΠΆΠ½Ρ‹ΠΌ частным случаСм являСтся суТСниС Ρ‚ΠΈΠΏΠ° Object Π΄ΠΎ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ссылочного Ρ‚ΠΈΠΏΠ°).

Π‘ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ссылочных Ρ‚ΠΈΠΏΠΎΠ² (интСрфСйсов ΠΈ массивов) этот список Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ строкС

Π­Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠΆΠ΅ Π½Π΅ Ρ€Π°Π· ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ. Π›ΡŽΠ±ΠΎΠΉ Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊ строкС, Ρ‚.Π΅. ΠΊ экзСмпляру класса String. Π’Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ являСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π² силу Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС Ρ‚ΠΈΠΏΡ‹, Π² Ρ‚ΠΎΠΌ числС ΠΈ boolean, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ тоТдСствСнного.

Напомним, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹.

ЧисловыС Ρ‚ΠΈΠΏΡ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² тСкстовом Π²ΠΈΠ΄Π΅ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ точности прСдставлСния. Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ происходит Π² Π΄Π²Π° этапа. Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π° основС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ значСния пороТдаСтся экзСмпляр ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса-"ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ", Π° Π·Π°Ρ‚Π΅ΠΌ Ρƒ Π½Π΅Π³ΠΎ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ toString(). Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти дСйствия снаруТи Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ JVM ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡ… ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ значСния Π² тСкст Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

БулСвская Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° приводится ΠΊ строкС "true" ΠΈΠ»ΠΈ "false" Π² зависимости ΠΎΡ‚ значСния.

Для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ toString(). Если ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ null, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ строка "null".

Для null -значСния гСнСрируСтся строка "null".

Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π½Ρ‹Π΅ прСобразования

НС всС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ допустимы. НапримСр, ΠΊ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π½Ρ‹ΠΌ прСобразованиям относятся: ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ ΠΎΡ‚ любого ссылочного Ρ‚ΠΈΠΏΠ° ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ, ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ - ΠΊ ссылочному (ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ строкС). Π£ΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π²ΡˆΠΈΠΉΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ - Ρ‚ΠΈΠΏ boolean - нСльзя привСсти Π½ΠΈ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ, ΠΊΡ€ΠΎΠΌΠ΅ boolean (ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ - Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ привСдСния ΠΊ строкС). Π—Π°Ρ‚Π΅ΠΌ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ привСсти Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ Ρ‚ΠΈΠΏΡ‹, находящиСся Π½Π΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ, Π° Π½Π° сосСдних вСтвях Π΄Π΅Ρ€Π΅Π²Π° наслСдования. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассматривался для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ссылочных Ρ‚ΠΈΠΏΠΎΠ², ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ Child ΠΊ Child2 Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½. Π’ самом Π΄Π΅Π»Π΅, ссылка Ρ‚ΠΈΠΏΠ° Child ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ класса Child ΠΈΠ»ΠΈ Π΅Π³ΠΎ наслСдников. Π­Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ совмСстим с Ρ‚ΠΈΠΏΠΎΠΌ Child2.

Π­Ρ‚ΠΈΠΌ список Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π΅ исчСрпываСтся. Он довольно Π²Π΅Π»ΠΈΠΊ, ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ достаточно ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹, поэтому ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚. Π–Π΅Π»Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· спСцификации.

РазумССтся, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΉ

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

Π’Π°ΠΊΠΈΠ΅ ситуации ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сгруппированы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ (assignment). НС всС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ допустимы ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ - ограничСния Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΌΠΎΠ³Π»Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Π°Ρ ситуация.

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

Π―Π²Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π’ этом случаС явно указываСтся, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ трСбуСтся привСсти исходноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π”ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ всС Π²ΠΈΠ΄Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΊ строкС ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π½Ρ‹Ρ…. ΠœΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ строкС своих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

ЧисловоС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ (numeric promotion). ЧисловыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ измСнСния Ρ‚ΠΈΠΏΠ° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°(ΠΎΠ²). Π­Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ особоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ - Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ (promotion), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹Π±ΠΎΡ€ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ исходного значСния, Π½ΠΎ ΠΈ ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.