Наследование в Руби.
Руби не поддерживает множественного наследование. Но если необходимо использовать функциональность нескольких классов предлагается компромисное решение - смеси.
Для указания наследования одного класса другим используется символ "<":
Если классу посылается сообщение с именем метода, который необходимо вызвать, но такой метод не найден в описании класса, поиск выполняется в описании класс предка и.д. Если метод не найден - вызывается метод Object#method_missing и выдается ошибка. Но этот метод можно переопределить.
При переопределении метода можно использовать метод родительского класса:
super вызывает метод базового класса с таким же именем как и метод, в из которого вызывается super. Точно так же super используется для метода initialize.
Права доступа.
В Руби есть 3 типа прав доступа:
- public - метод может вызываться кем угодно, устанавливается по умолчанию
- private - метод может вызываться наследниками, но только в контексте одного объекта
- protected - метод может вызываться наследниками не только в контексте одного объекта
Указание типа аксессора можно выполнять двумя способами:
Попробуем сотворить какую нибудь иерархию классов, что бы посмотреть как все это работает. Допустим есть канва, на которой рисуются объекты, причем сначала рисуются объекты большей площади.
Если в Shape area будет объявлена как private, то в процессе выполнения получим ошибку: in 'greater_area': private method 'area' called for #<>, так как area доступна только в контексте одного объекта.
среда, 12 сентября 2007 г.
Классы и объекты в Ruby ч.2
Автор: sash_ko на 20:12
Ярлыки: Программизм, Ruby
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий