Программирование на языке Ruby
Шрифт:
Следует еще сказать, что метод класса можно сделать закрытым, воспользовавшись методом
11.1.5. Наследование суперклассу
Можно унаследовать класс, воспользовавшись символом
Это объявление говорит, что класс
Ясно, что цель наследования — расширить или специализировать функциональность. Мы хотим получить из общего нечто более специфическое.
Попутно отметим, что во многих языках, например в C++, допускается множественное наследование (МН). В Ruby, как и в Java, и в некоторых других языках, множественного наследования нет, но наличие классов-примесей компенсирует его отсутствие (см. раздел 11.1.12).
Рассмотрим несколько более реалистичный пример. У нас есть класс
Определим класс
А класс
Посмотрим внимательно, что здесь сделано. Что за
Не всегда необходимо использовать слово
Если говорить об истинном смысле наследования, то оно, безусловно, описывает отношение «является». Студент является человеком, как и следовало ожидать. Сделаем еще три замечания:
• Каждый атрибут (и метод) родительского класса отражается в его потомках. Если в классе
• Потомок может иметь дополнительные атрибуты и методы, мы это только что видели. Поэтому создание подкласса часто еще называют расширением суперкласса.
• Потомок может переопределять любые атрибуты и методы своего родителя.
Последнее замечание подводит нас к вопросу о том, как разрешается вызов метода. Откуда я знаю, вызывается ли метод конкретного класса или его суперкласса?
Краткий ответ таков: не знаю и не интересуюсь. Если вызывается некий метод от имени объекта класса
А что если мы хотим вызвать метод суперкласса, но не из соответствующего метода подкласса? Можно сначала создать в подклассе синоним:
Барон Бранд Берс. Том 1
1. Бранд Берс
Проза:
магический реализм
рейтинг книги
Воин
2. Атланты
Фантастика:
научная фантастика
рейтинг книги
Санта-Хрякус
20. Плоский мир
Фантастика:
юмористическая фантастика
рейтинг книги
Золото бунта
Приключения:
исторические приключения
рейтинг книги
Эволюционер из трущоб. Том 6
6. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Рубеж. Пентакль
6. Большая серия русской фантастики
Фантастика:
научная фантастика
рейтинг книги
Кухня народов СССР
Дом и Семья:
кулинария
рейтинг книги
Я все еще царь. Книга XXXI
31. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
рейтинг книги
Виконт. Книга 2. Обретение силы
2. Псевдоним `Испанец`
Фантастика:
боевая фантастика
попаданцы
рпг
рейтинг книги
Дырка для ордена; Билет на ладью Харона; Бремя живых
Фантастика:
альтернативная история
фэнтези
рейтинг книги
Барон Бранд Берс. Том 3
3. Бранд Берс
Проза:
магический реализм
рейтинг книги
Фамильяр
Фантастика:
фэнтези
рейтинг книги
Избранное
Фантастика:
альтернативная история
рейтинг книги