Форум → Программирование → PHP для идиотов → механизм наследования в ооп
механизм наследования в ооп
Страницы: ← Следующая страница →
-
я всегда думал, что наследующий класс создает новый экземпляр родительского класса, причем вызывая его конструктор. но тут мои опыты показали, что оказывается наследник не вызывает конструктор родителя о_О
вопросы:
1) создает ли наследник новый экземпляр класса родителя?
2) он не вызывает конструктор родителя? -
Апрель 2, 2010, 11:12 п.п., спустя 3 минуты 1 секунду
наследующий класс ничего не создат, какой нафиг экземпляр класса родителя?
в PHP конструктор предка нужно вызывать напрямую (если нужно):parent::__constructor()
-
Апрель 2, 2010, 11:18 п.п., спустя 5 минут 34 секунды
а как он тогда от родительского свойства и методы скопирует? -
-
Апрель 3, 2010, 1:14 д.п., спустя 1 час 52 минуты 7 секунд
soulgarden, короче, ботва выходит в том, что, по сути, он просто присоединяет родительские методы над своими. Можно грубо сказать - копирует из родительского класса к себе все методы, а также конструктор, но конструктор тут будет уже как бы отдельным методом (а не привычным нам "магическим" методом, который срабатывает при инициализации). Потому его (констуктор) и нужно будет в конструкторе уже нашего создаваемого класса вызвать (так, как указал Васяц).
Я понимаю это дело таким макаром. -
Апрель 3, 2010, 1:33 д.п., спустя 19 минут 3 секунды
Есть класс раз - набор методов со своими именами
Есть класс двас - набор методов со своими именами и ссылкой на "раз" как на предка
Есть объект, назовём его "хуй", со своими свойствами и ссылкой на "двас", как на свой класс
Вызывается метод method() - ищется "method" у в списке методов класса объекта.
Не найден - идет дальше по цепочке классов-предков.
Соответственно, когда метод с тем же именем в наследуемом классе перекрывает одноименный метода класса-предка, то хуй достучишься до того таким макаром.
Если очень нужно, следует явно указать parent::
С конструктором всё тоже, что и с обычными методами -
Апрель 3, 2010, 6:37 д.п., спустя 5 часов 3 минуты 32 секунды
васяц отлично всё объяснил. синтаксис parent::метод может сбить с толку — выглядит как обращение к статическому методу, а на самом деле происходит неявное использование $thisιιlllιlllι унц-унц -
-
Апрель 3, 2010, 6:48 п.п., спустя 31 минуту 40 секунд
васяц отлично всё объяснил. синтаксис parent::метод может сбить с толку — выглядит как обращение к статическому методу, а на самом деле происходит неявное использование $this
вообще то исторически :: - это операция доступа к области видимости. Это как раз ставит всё на свои места. -
Апрель 3, 2010, 7 п.п., спустя 11 минут 42 секунды
kostyl, ты наверное имел в виду области имен, а не области видимости. php срал на всё историческое. дяди подумали и решили, что в php неймспесы будут через "\"
такие вещи нельзя понять, можно просто запоминатьιιlllιlllι унц-унц -
Апрель 3, 2010, 7:13 п.п., спустя 12 минут 46 секунд
artoodetoo, нет, я говорю, что ты как бы в :: вложил понятие статики, а я, как бы на основании исторических причин )) вложил доступ к области видимости, что нормально разрулило ситуацию с замеченным тобой явлением сбития с толку.int g;
int main () {
int g;
g = 1;
::g = 2;
return 0;
} -
-
Апрель 3, 2010, 10:11 п.п., спустя 1 час 9 минут 54 секунды
kostyl, не пей.
А медведь панда как бы всем своим видом говорит: "Не бухайте" (махая пальцем лапы так влево-вправо) -
Апрель 3, 2010, 11:27 п.п., спустя 1 час 15 минут 29 секунд
есть класс например ядро. и наследуюший его. ну роутер пусть. хочется чтобы роутер наследовал ядро для того чтобы содержать в себе основные классы. то есть ядро инстанцирует в себе лоадер, еще какую нибудь важную хрень. и надо чтоб наследующий его роутер наследовал и инстанцированные объекты этих классов. но фигушки. инстанцирование этих классов находится в конструкторе класса ядра. мы можем вручную parent::__construct() делать, но хочется чтоб оно наследовало само и не инстанцировало каждый раз а брало уже инстанцированную в лоадере ранее объект. то есть как бы чтоб роутер наследуя инстанцировал ядро. хуйню нагородил :), надеюсь поймете, возможно ли сделать что я хочу? -
Апрель 3, 2010, 11:31 п.п., спустя 4 минуты 54 секунды
не люблю я эти терки для высших умов: лоадер, роутер… траляля, как лучше… философия фреймворков… блаблаблаhttps://smappi.org/ - платформа по созданию API на все случаи жизни
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!