Курс языка программирования 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 тест по содержанию этой темы.

Навигация по курсу

Интроспекция объектов   |   Тест — Интроспекция


💪 Или перейдите сразу к упражнениям этого раздела.