Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты / Интроспекция объектов
Цепочка наследования
Когда один класс наследует от другого, можно запросить всю цепочку
типов, на которых он построен. Метаметод .^mro возвращает
эту цепочку — название расшифровывается как method resolution
order, порядок разрешения методов, то есть порядок, в котором Raku
ищет метод.
class Animal {
}
class Dog is Animal {
}
say Dog.^mro; # ((Dog) (Animal) (Any) (Mu))Читая слева направо: Dog — это сначала он сам, затем
Animal (его родитель), затем Any и
Mu — два типа, от которых на самом верху наследует каждый
объект Raku. Когда вы вызываете метод у Dog, Raku
просматривает этот список слева направо и берёт первый подходящий метод,
который найдёт. Именно поэтому метод потомка переопределяет метод
родителя: потомок стоит в цепочке раньше.
Для класса без явного родителя цепочка короче — только сам класс, а
за ним Any и Mu.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Интроспекция объектов | Тест — Интроспекция →
💪 Или перейдите сразу к упражнениям этого
раздела.