Хитрый момент во множественном наследовании

| Нет комментариев

Если создать класс, унаследованный от двух других, то будет не слишком очевидно, от какого класса окажется унаследованным метод import.

Простой пример. Имеется два модуля BaseA и BaseB, содержащие только метод import.

package BaseA;

sub import {
    print "Base A\n";
}

1;


package BaseB;

sub import {
    print "Base B\n";
}

1;

Модуль Derived содержит лишь инструкции, указывающие эти два класса как базовые:

package Derived;

use base BaseA;
use base BaseB;

1;

Что произойдет, если в программе используется модуль Derived, и вызван метод import?

use Derived;

Derived->import();

На печать дважды выводится строка Base A (первый раз при подключении, второй — при явном вызове import).

А вот если поменять порядок наследования внутри Derived:

package Derived;

use base BaseB;
use base BaseA;

1;

то на печать дважды выводится Base B.

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 23.08.2009 23:09. Автор — ash.

Предыдущая запись — Perl, Пърл, पर्ल

Следующая запись — Пересмотр WWW::Page

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.