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

Абстрактные классы в PHP — это классы, объекты которых нельзя создать напрямую, а только через наследников

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

    php поддерживает определение абстрактных классов и методов
    На основе абстрактного класса нельзя создавать объекты
    Любой класс, содержащий хотябы один абстрактный метод, должен быть определен как абстрактный
    Методы объявленные как абстрактные несут лишь описательный смысл и не могут включать реализацию
    При наследовании от абстрактного класса, все методы помеченные абстрактными в родительском классе, должны быть определены в дочернем классе и сдедовать обычным правилам наследования и совместимости сигнатуры

    abstract class AbstractClass { #Методы которые должны быть определены в дочернем классе abstract protected function getValue(); abstract protected function prefixValue($prefix); #Общий метод public function printOut() { print $this->getValue() . "<br>"; } } class ConcreteClass1 extends AbstractClass { protected function getValue() { return "ConreteClass1"; } public function prefixValue($prifix) { return "{$prefix}ConcreteClass1"; } } class ConcreteClass2 extends AbstractClass { public function getValue() { return "ConcreteClass2"; } public function prefixValue($prefix) { return "{$prefix}ConcreteClass2"; } } #$class = new AbstractClass(); # На основе абстрактного класса нельзя создавать объекты $class1 = new ConcreteClass1(); $class2 = new ConcreteClass2(); $class1->printOut(); $class2->printOut(); echo $class1->prefixValue("FOO_"); echo $class2->prefixValue("FOO_"); abstract class AbstractClass { abstract protected function prefixName($name); } #дочерний класс может определить необязательные аргументы, не указанные в объявлении родительского метода class ConcreteClass extends AbstractClass { public function prefixName($name, $separator = ".") { if ($name == "Pacman") { $prefix = "Mr"; } elseif ($name == "Pacwoman") { $prefix = "Mrs"; } else { $prefix = ""; } return "{$prefix}{$separator} {$name}"; } } $class = new ConcreteClass(); echo $class->prefixName("Pacman"); echo $class->prefixName("Mrs", "-");
    Источники
    Последнее изменение: 19.11.2024 02:05


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ