САМОУЧИТЕЛЬ PHP 4



         

Наследование - часть 2


Впрочем, такой способ расширения также иногда находит применение. Мы поговорим об этом чуть позже. А пока рассмотрим, что же представляет собой наследование

(или расширение возможностей) классов.

class B extends A {

 function B(параметры_для_A, другие_параметры)

 { $this->A(параметры_для_A);

 инициализируем другие поля B

 }

 function TestB() { ... }

 function Test() { ... }

}

Ключевое слово extends говорит о том, что создаваемый класс является лишь "расширением"

класса A, и не более того. То есть B содержит те же самые свойства и методы, что и A, но, помимо них и еще некоторые дополнительные, "свои".

Теперь "часть A" находится прямо внутри класса B

и может быть легко доступна, наравне с методами и свойствами самого класса B. Например, для объекта $obj класса B допустимы выражения $obj->TestA()

и $obj->TestB(). Итак, мы видим, что, действительно, класс B

является воплощением идеи "рас­ширение функциональности класса A". Обратите также внимание: мы можем теперь забыть, что B

унаследовал от A

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

Немного о терминологии: принято класс A называть базовым, а класс B — производным от A. Иногда базовый класс также называют суперклассом, а производный — подкласcом.

Зачем может понадобиться наследование? Например, мы написали класс Mysql-таблицы и хотели бы дополнительно иметь класс Guestbook (гостевая книга). Очевидно, в классе Guestbook будет много методов, которые нужны для того же, что и методы из MysqlTable, поэтому было бы разумным сделать его производным от MysqlTable:

class Guestbook extends MysqlTable {

 . . .

 методы и свойства, которых нет в MysqlTable

 и которые относятся к гостевой книге

}

Многие языки программирования поддерживают множественное наследование (то есть такое, когда, скажем, класс B наследует члены не одного, а сразу нескольких классов — например, A и Z). К сожалению, в PHP таких возможностей нет.




Содержание  Назад  Вперед