Web-технологии с базами данных. Астахова И.Ф - 57 стр.

UptoLike

57
Хотя класс наследует свои характеристики от цепочки родите-
лей, конструкторы родительских классов не вызываются автомати-
чески при создании объектов класса-наследника. Эти конструкторы
могут вызываться классом-наследником в виде методов.
Абстрактные классы
В некоторых ситуациях бывает удобно создать класс, объекты
которого никогда не создаются (данный класс нужен всего лишь
как
базовый для создания производных классов). Такие классы на-
зываются абстрактными. Абстрактные классы обычно применяются
в тех случаях, когда разработчик программы хочет обеспечить обя-
зательную поддержку некоторых функциональных возможностей
всеми классами, производными от абстрактного базового класса.
В РНР отсутствует прямая поддержка абстрактных классов,
однако существует простое обходное решениедостаточно опре-
делить в
<абстрактном> классе конструктор и включить в него вы-
зов die( ). Для представления реальных объектов следует создать
класс, производный от этих классов. Следовательно, чтобы предот-
вратить возможное создание объектов классов Home и Street, необ-
ходимо включить в их конструкторы вызовы die( ), как показано
ниже.
<?
class Plant
{
Объявления атрибутов...
function Plant()
}
die ("Cannot create Abstract Plant class!");
}
Объявления других методов...
}
class Street extends Plant
{
Объявления атрибутов...
function Land() }
die ("Cannot create Abstract Street
class!");
}
Объявления других методов
}
class Home extends Street
{
                               57
     Хотя класс наследует свои характеристики от цепочки родите-
лей, конструкторы родительских классов не вызываются автомати-
чески при создании объектов класса-наследника. Эти конструкторы
могут вызываться классом-наследником в виде методов.
     Абстрактные классы
     В некоторых ситуациях бывает удобно создать класс, объекты
которого никогда не создаются (данный класс нужен всего лишь
как базовый для создания производных классов). Такие классы на-
зываются абстрактными. Абстрактные классы обычно применяются
в тех случаях, когда разработчик программы хочет обеспечить обя-
зательную поддержку некоторых функциональных возможностей
всеми классами, производными от абстрактного базового класса.
     В РНР отсутствует прямая поддержка абстрактных классов,
однако существует простое обходное решение – достаточно опре-
делить в <абстрактном> классе конструктор и включить в него вы-
зов die( ). Для представления реальных объектов следует создать
класс, производный от этих классов. Следовательно, чтобы предот-
вратить возможное создание объектов классов Home и Street, необ-
ходимо включить в их конструкторы вызовы die( ), как показано
ниже.