1. Китове и крави
Ето един интересен зоологически факт: кравата е много по-близо до кита, отколкото например до хипопотама. Оказва се, че кравите и китовете са относително близки роднини.
Вижте тук. Нека ви разкажем за полиморфизма — друг много мощен инструмент на ООП . Има четири функции.
2. Наследството не е панацея
Представете си, че сте написали Cow
клас за игра. Има много полета и методи. Обектите от този клас могат да правят различни неща: да ходят, да ядат и да спят. Кравите също носят звънец, който звъни, когато ходят. Да предположим, че сте внедрor всичко в класа до най-малкия детайл.
И тогава вашият клиент идва и казва, че иска да пусне ново ниво на играта, в което цялото действие се развива в морето, а главният герой е кит.
Започвате да проектирате Whale
клас и разбирате, че той е само малко по-различен от Cow
класа. Логиката на двата класа е много сходна и вие решавате да използвате наследяване.
Класът Cow
е идеален за поемане на ролята на родителски клас: той има всички необходими променливи и методи. Всичко, което трябва да направим, е да дадем на кита способността да плува. Но има проблем: вашият кит има крака, рога и камбана. В крайна сметка тази функционалност е реализирана вътре в Cow
класа. Какво може да се направи тук?
3. Замяна на метода
Замяната на метода ни идва на помощ. Ако сме наследor метод, който не прави точно това, което искаме в нашия нов клас, можем да заменим този метод с друг.
Как става това? В нашия наследствен клас ние декларираме същия метод като метода на родителския клас, който искаме да заменим. Пишем нашия нов code в него. И това е всичко — сякаш старият метод в родителския клас просто не съществува.
Ето How работи:
Код | Описание |
---|---|
|
|
|
Този code показва следния текст на екрана:
|
|
Този code показва следното на екрана:
|
След наследяване на Cow
класа и замяна на printName
метода, Whale
класът всъщност съдържа следните данни и методи:
|
Не знаем за нито един стар метод. |
GO TO FULL VERSION