ГЛАВА 6. Объектно-ориентированные возможности РНР
Абстрактные классы
В некоторых ситуациях бывает удобно создать класс, объекты которого никогда не создаются(данный класс нужен всего лишь как базовый для создания производных классов). Такие классы называются абстрактными. Абстрактные классы обычно применяются в тех случаях, когда разработчик программы хочет обеспечить обязательную поддержку некоторых функциональных возможностей всеми классами, производными от абстрактного базового класса.
В РНР отсутствует прямая поддержка абстрактных классов, однако существует простое обходное решение — достаточно определить в «абстрактном» классе конструктор и включить в него вызов die(). Вернемся к классам из листинга 6.4. Скорее всего, вам никогда не придется создавать экземпляры классов Land и Vehicle, поскольку они не могут представлять физические объекты. Для представления реальных объектов(например, автомобилей) следует создать класс, производный от этих классов. Следовательно, чтобы предотвратить возможное создание объектов классов Land и Vehicle, необходимо включить в их конструкторы вызовы die(), как показано в листинге 6.5.
Листинг 6.5. Создание абстрактных классов
<?
class Vehicle {
Объявления атрибутов...
function Vehicle() {
die("Cannot create Abstract Vehicle class!");
}
Объявления других методов...
}
class Land extends Vehicle {
Объявления атрибутов...
function Land() {
die("Cannot create Abstract Land class!");
}
Объявления других методов.
}
class Car extends Land {
Объявления атрибутов...
Объявления методов...
}
?>
Попытка создания экземпляра этих абстрактных классов приведет к выдаче сообщения об ошибке и завершению программы.
Назад |
Содержание раздела |
Общее Содержание |
Вперед
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|