Курс по Raku / Обекти, вход-изход и изключения / Класове и обекти

Наследяване

Наследяването позволява един клас да се надгради над друг. Клас, деклариран с is след името си, наследява атрибутите и методите на класа, който назовава — своя родителски (или базов) клас.

class Animal {
    has $.name;
    method speak {
        'some sound';
    }
}

class Dog is Animal {
}

Dog is Animal означава, че Dog е вид Animal. Без да е написано нищо ново, Dog вече има атрибута name и метода speak от Animal:

my $rex = Dog.new(name => 'Rex');
say $rex.name;  # Rex
say $rex.speak; # some sound

Обект Dog се разпознава и като Animal:

say Dog.new ~~ Animal; # True

Интелигентното съпоставяне ~~ срещу тип е истина, когато обектът е от този тип или наследява от него. Следващата тема показва как дъщерен клас може да замени наследен метод със своя собствена версия.

Още в този раздел

Практика

Направете 1 тест върху съдържанието на този раздел.

Упражнения

Този раздел съдържа 3 упражнения. Разгледайте всички теми в раздела, преди да се захванете с практиката.

  1. Служители и роли
  2. Фигура и квадрат
  3. Наследен атрибут

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

Тест — Подпрограми и методи   |   Предефиниране на методи