PHP 4 на практике

Абстрактные классы


В некоторых ситуациях бывает удобно создать класс, объекты которого никогда не создаются (данный класс нужен всего лишь как базовый для создания производных классов). Такие классы называются абстрактными. Абстрактные классы

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

В РНР отсутствует прямая поддержка абстрактных классов, однако существует простое обходное решение — достаточно определить в «абстрактном» классе конструктор и включить в него вызов 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 {

Объявления атрибутов...

Объявления методов...

}

?>

Попытка создания экземпляра этих абстрактных классов приведет к выдаче сообщения об ошибке и завершению программы.



Содержание раздела