Нужно ли использовать класс для использования его методов в моем подклассе в Perl? - PullRequest
4 голосов
/ 29 ноября 2009

Ладно, кодирую на Perl и просто возник быстрый вопрос. У меня есть класс, созданный под названием SubtitleSite, который в основном является абстракцией, и класс под названием podnapisi, который наследует SubtitleSite следующим образом:

@ISA = qw(SubtitleSite);

У меня вопрос, должен ли я использовать:

use SubtitleSite;

для того, чтобы иметь доступ ко всем методам в SubtitleSite?

Ответы [ 5 ]

11 голосов
/ 29 ноября 2009

Да, но в большинстве случаев лучше не связываться с @ISA напрямую. Просто use parent qw(SubtitlesSite);, он загрузит для вас SubtilteSite и добавит его к @ISA.

3 голосов
/ 29 ноября 2009

Да.
Дополнительную информацию можно найти здесь:

2 голосов
/ 29 ноября 2009

YES.

В противном случае символы, определенные в SubtitleSite, не определены в поднаписании.

0 голосов
/ 29 ноября 2009

Если вы создаете объект в своем дочернем классе, вы можете просто вызывать методы для себя, и они будут найдены через магию наследования (см. perldoc perlobj для получения дополнительной информации о SUPER):

sub foo
{
    my $this = shift;
    $this->method_on_parent;  # this works!
    $this->SUPER::foo;        # this works too
}

Однако, если эти классы являются только библиотечными функциями, которые не используют ОО, вы должны явно указать Perl, где найти функцию:

ParentClass::function;    # use the class name explicitly
0 голосов
/ 29 ноября 2009

Чтобы получить доступ к методам, вам нужно либо наследовать от него, либо делегировать объекту его типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...