Страницы

четвер, 6 листопада 2014 р.

Наслідування(Inheritance) в Java.

Наслідування(Inheritance) в Java.
Наслідуванням можна назвати процес, в якому один об'єкт набуває властивостей іншого. Точніше, об'єкт може успадковувати основні властивості іншого об'єкта і додавати до них риси, характерні тільки для нього. Наслідування дозволяє підтримувати концепцію ієрархії класів.
Коли ми говоримо про наслідування, найбільш часто використовуване ключове слово є extends і implements.  Ці слова означають що один обєкт "IS-A" (є, являється) обєктом іншого типу, це відношення "узагальнення-деталізація", наприклад: "Собака є твариною".  За допомогою цих ключових слів ми можемо зробити один об'єкт надати йому властивості іншого об'єкта.

Відношення IS-A (є, являється):
Відношення IS-A  - це спосіб сказати: Цей об'єкт представляє собою об'єкт цього типу. Давайте подивимось як ключове слово extends використовується при наслідуванні:
на основі вище наведеного прикладу, в Об'єктно - орієнтованій термінології, наступні твердження є вірними:
- Клас Animal є суперкласом(базовим класом) для класу Mammal.
- Клас Animal є суперкласом(базовим класом) для класу Reptile.
- Класи Mammal і Reptile є підкласами(класами наслідниками) класу Animal.
- Клас Dog є підкласом класу Mammal, а той підкласом Animal.

Тепер якщо розглядати це у IS-A відношенні, ми можемо сказати:
- Mammal IS-A Animal
- Reptile IS-A Animal
- Dog IS-A Mammal
- Отже : Dog IS-A Animal

Використовуючи ключове слово extends, підкласи можуть успадковувати всі властивості суперкласу крім приватних властивостей.

Ми можемо гарантувати, що Mammal насправді є Animal. Виконавши перевірку оператором instanceof .

Приклад:
Результатом цього коду буде:
true
true
true

Оскільки ми тепер добре розуміємо значення ключового cлова extends, давайте тепер розглянемо як використовується ключове слово implements для того щоб отримами IS-A відношення.

Ключове слово implements використовується для класів що наслідуються від інтерфейсів. Інтерфейс ніколи не може наслідуватися від класу.

Приклад використання ключового слова implements:
Ключове слово instanceof:
Використовуючи ключове слово instanceof, можна перевірити чи насправді Mammal є типу Animal, і Dog є типу Animal.
Результатом цього коду буде:
true
true
true

Відношення HAS-A(має в своєму складі, складається з):
Відношення "HAS-A" - це відношення "ціле-частина", йому відповідає вкладення. Це створення класу, елементами якого є об'єкти іншого класу, це також називають композицією. Це відношення допомагає зменшити дублювання коду, яке також є помилкою.
Давайте розглянемо приклад:
Це приклад показує, що клас Van HAS-A Speed. Маючи окремий клас Speed​​, ми не повинні переписувати весь код, всередині класу Van, це дозволяє повторно використовувати клас Speed в різних додатках.

У об'єктно - орієнтованому програмуванні користувачам не потрібно турбуватися про те який обєкт реально робить роботу. Щоб добитися цього клас Van приховує деталі реалізації від користувачів. Тому в основному користувачі будуть задавати класу Van зробити певну дію і клас Van коли небудь зробить дію самостійно або попросить інший клас, виконати її.
Дуже важливо пам'ятати, що Java підтримує тільки одиночне наслідування. Це означає, що клас не може наслідувати більше одного класу. Тому наступне твердження є неправильним:
Проте, клас може реалізувати один або декілька інтерфейсів.

Заміщення(Overriding) методу в Java.

Немає коментарів:

Дописати коментар