Курс 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 тест за змістом цієї теми.

Навігація курсом

Інтроспекція об’єктів   |   Тест — Інтроспекція


💪 Або перейдіть одразу до вправ цього розділу.