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

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

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

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы "Π›Π΅Π³ΠΊΠΎΠ²ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ" ΠΈ "Π“Ρ€ΡƒΠ·ΠΎΠ²ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ". ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, эти Π΄Π²Π° класса ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’Π°ΠΊ, ΠΎΠ±Π° ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ 4 колСса, Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈ Ρ‚.Π΄. ВсСми этими свойствами ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ любой Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΎΠΉ ΠΎΠ½ ΠΈΠ»ΠΈ Π»Π΅Π³ΠΊΠΎΠ²ΠΎΠΉ, 5- ΠΈΠ»ΠΈ 12-мСстный. Π Π°Π·ΡƒΠΌΠ½ΠΎ вынСсти эти ΠΎΠ±Ρ‰ΠΈΠ΅ свойства ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ" ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅Π³ΠΎ классы "Π›Π΅Π³ΠΊΠΎΠ²ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ" ΠΈ "Π“Ρ€ΡƒΠ·ΠΎΠ²ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ", Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ написания ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠΎΠ΄Π° Π² Ρ€Π°Π·Π½Ρ‹Ρ… классах.



ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ обобщСния обозначаСтся сплошной Π»ΠΈΠ½ΠΈΠ΅ΠΉ с Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ стрСлкой Π½Π° ΠΊΠΎΠ½Ρ†Π΅. Π‘Ρ‚Ρ€Π΅Π»ΠΊΠ° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ класс ( класс-ΠΏΡ€Π΅Π΄ΠΎΠΊ ΠΈΠ»ΠΈ супСркласс ), Π° Π΅Π΅ отсутствиС - Π½Π° Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс ( класс-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ ΠΈΠ»ΠΈ подкласс ).

ИспользованиС наслСдования способствуСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡŽ количСства ΠΊΠΎΠ΄Π°, созданного для описания схоТих сущностСй, Π° Ρ‚Π°ΠΊΠΆΠ΅ способствуСт написанию Π±ΠΎΠ»Π΅Π΅ эффСктивного ΠΈ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π’ рассмотрСнном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΎ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅ наслСдованиС. НСкоторый класс Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ свойства ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ сразу Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов. НаиболСС популярным ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ примСнСния мноТСствСнного наслСдования являСтся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ систСмы ΡƒΡ‡Π΅Ρ‚Π° Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π² Π·ΠΎΠΎΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅.

ВсС ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Π΅ Π² Π·ΠΎΠΎΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ наслСдниками класса "Π–ΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅", Π° Ρ‚Π°ΠΊΠΆΠ΅ наслСдниками класса "Π’ΠΎΠ²Π°Ρ€". Π’.Π΅. всС ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ возраст, Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΈΡ‰Π΅ ΠΈ Π²ΠΎΠ΄Π΅ ΠΈ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΈΠΌΠ΅ΡŽΡ‚ Ρ†Π΅Π½Ρƒ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π°Π½Ρ‹.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ изобраТаСтся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π»ΠΈΠ½ΠΈΠΈ наслСдования ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ класс-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ сразу с нСсколькими супСрклассами.

НС всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки программирования содСрТат языковыС конструкции для описания мноТСствСнного наслСдования.

Π’ языкС Java мноТСствСнноС наслСдованиС ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· интСрфСйсы ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСно Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 8.

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… понятий Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ наряду с наслСдованиСм ΠΈ инкапсуляциСй. Π‘Π»ΠΎΠ²ΠΎ " ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ " грСчСского происхоТдСния ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ "ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌ". Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ графичСский Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ классов Π½Π°Π±ΠΎΡ€ графичСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² - Point, Line, Circle, Box ΠΈ Ρ‚.Π΄. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· этих классов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ draw для отобраТСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π° Π½Π° экранС.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, придСтся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ нСобходимости ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ рисунок Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ всС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹, Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ отрисовки находящиСся Π½Π° экранС, ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ draw Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ, Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ с ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ, вСроятнСС всСго, создаст нСсколько массивов (ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ массив для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ²) ΠΈ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π±Π΅Ρ€Π΅Ρ‚ элСмСнты ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ массива ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΌΠ΅Ρ‚ΠΎΠ΄ draw. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получится ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


... //созданиС пустого массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚

// ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Point с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ

// объСмом 1000

Point[] p = new Point[1000];


Line[] l = new Line[1000];

Circle[] c = new Circle[1000];

Box[] b = new Box[1000];

...

// ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π² этом мСстС происходит

// Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ всСх массивов ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ

// ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ

...

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

//Ρ†ΠΈΠΊΠ» с ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ΠΎΠΌ всСх ячССк массива.

//Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° draw() Π² случаС,

// Ссли ячСйка Π½Π΅ пустая.

if(p[i]!=null) p[i].draw();

}

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

if(l[i]!=null) l[i].draw();

}

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

if(c[i]!=null) c[i].draw();

}

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

if(b[i]!=null) b[i].draw();

}

...


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

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, создадим ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс для всСх Π½Π°ΡˆΠΈΡ… классов. ΠŸΡƒΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ классом Π±ΡƒΠ΄Π΅Ρ‚ Point. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ классов, которая ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° рисункС 2.3.

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

Для описанной Π²Ρ‹ΡˆΠ΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


...

Point p[] = new Point[1000];

p[0] = new Circle();

p[1] = new Point();

p[2] = new Box();

p[3] = new Line();

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

if(p[i]!=null) p[i].draw();

}

...


Π’ описанном Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ массив p[] ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ ΠΎΡ‚ наслСдников класса Point. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρƒ любого ΠΈΠ· элСмСнтов этого массива Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТится Π² ячСйкС массива. НапримСр, Ссли Π² ячСйкС p[0] находится ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Circle, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° draw ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


p[0].draw()


нарисуСтся ΠΊΡ€ΡƒΠ³, Π° Π½Π΅ Ρ‚ΠΎΡ‡ΠΊΠ°.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (polymorphism) - ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ², согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…) ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Π½Ρ‹Ρ… (Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ‰Π΅Π³ΠΎ родитСля) классов. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎ-своСму Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΊΠΈΠΉ ΠΎΠ±Ρ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ [2].

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



Рис. 2.3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ использования ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² языкС Java ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ класс PrintWriter, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ примСняСтся, Π² частности, для Π²Ρ‹Π²ΠΎΠ΄Π° сообщСний Π½Π° консоль. Π­Ρ‚ΠΎΡ‚ класс ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² println, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΈ/ΠΈΠ»ΠΈ количСством Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π’ΠΎΡ‚ лишь нСсколько ΠΈΠ· Π½ΠΈΡ…:


void println()

// ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку

void println(boolean x)

// Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ булСвской

// ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (true ΠΈΠ»ΠΈ false)

void println(String x)

// Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строку - Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

// тСкстового ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.


ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ слоТности Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’ Java ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Они Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π’ΠΈΠΏΡ‹ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ классами

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, любая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, написанная Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ языкС, прСдставляСт собой Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ связанных ΠΌΠ΅ΠΆΠ΄Ρƒ собой классов. МоТно провСсти аналогию ΠΌΠ΅ΠΆΠ΄Ρƒ написаниСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠΌ Π΄ΠΎΠΌΠ°. Подобно Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ стСна складываСтся ΠΈΠ· ΠΊΠΈΡ€ΠΏΠΈΡ‡Π΅ΠΉ, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° с использованиСм ООП строится ΠΈΠ· классов. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ эти классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ прСдставлСниС Π΄Ρ€ΡƒΠ³ ΠΎ Π΄Ρ€ΡƒΠ³Π΅, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ сообща Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ связи ΠΌΠ΅ΠΆΠ΄Ρƒ классами Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ (приводятся лишь Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простыС ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²ΠΈΠ΄Ρ‹ связСй, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ ΠΈΡ… рассмотрСниС Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этой ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ):


* агрСгация ( Aggregation );

* ассоциация ( Association );

* наслСдованиС ( Inheritance );

* мСтаклассы ( Metaclass ).

АгрСгация

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ классами Ρ‚ΠΈΠΏΠ° "содСрТит" (contain) ΠΈΠ»ΠΈ "состоит ΠΈΠ·" называСтся Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠ΅ΠΉ, ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ. НапримСр, Ссли Π°ΠΊΠ²Π°Ρ€ΠΈΡƒΠΌ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ Π²ΠΎΠ΄ΠΎΠΉ ΠΈ Π² Π½Π΅ΠΌ ΠΏΠ»Π°Π²Π°ΡŽΡ‚ Ρ€Ρ‹Π±ΠΊΠΈ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π°ΠΊΠ²Π°Ρ€ΠΈΡƒΠΌ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π² сСбС Π²ΠΎΠ΄Ρƒ ΠΈ Ρ€Ρ‹Π±ΠΎΠΊ.



Π’Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΈΠ»ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ (aggregation), изобраТаСтся Π»ΠΈΠ½ΠΈΠ΅ΠΉ с Ρ€ΠΎΠΌΠ±ΠΈΠΊΠΎΠΌ Π½Π° сторонС Ρ‚ΠΎΠ³ΠΎ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выступаСт Π² качСствС Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°, ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ записываСтся посСрСдинС Π»ΠΈΠ½ΠΈΠΈ.

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ contain являСтся Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ класса Aquarium содСрТит нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Fish. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя каТдая Ρ€Ρ‹Π±ΠΊΠ° "Π·Π½Π°Π΅Ρ‚", Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΠΊΠ²Π°Ρ€ΠΈΡƒΠΌΠ΅ ΠΎΠ½Π° ΠΆΠΈΠ²Π΅Ρ‚. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ класс ΠΈΠΌΠ΅Π΅Ρ‚ свою Ρ€ΠΎΠ»ΡŒ Π² Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠ΅ мСсто Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ класс Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ. Имя Ρ€ΠΎΠ»ΠΈ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтом ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€ΠΎΠ»ΡŒ home класса Aquarium (Π°ΠΊΠ²Π°Ρ€ΠΈΡƒΠΌ являСтся Π΄ΠΎΠΌΠΎΠΌ для Ρ€Ρ‹Π±ΠΎΠΊ), Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€ΠΎΠ»ΡŒ inhabitants класса Fish (Ρ€Ρ‹Π±ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ обитатСлями Π°ΠΊΠ²Π°Ρ€ΠΈΡƒΠΌΠ°). НазваниС Ρ€ΠΎΠ»ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ совпадаСт с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ поля Π² классС. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ поля Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ излишнС, Ссли ΡƒΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ имя Ρ€ΠΎΠ»ΠΈ. Π’.Π΅. Π² Π΄Π°Π½Π½ΠΎΠΌ случаС класс Aquarium Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свойство (ΠΏΠΎΠ»Π΅) inhabitants, Π° класс Fish - свойство home.