2016-06-07 3 views
0

Почему вы хотите, чтобы объявить абстрактный метод в приведенном ниже примере,Зачем использовать абстракцию в PHP OOP?

<?php 

    abstract class ClassName 
    { 
     abstract public function methodName(); 
    } 
?> 

когда

<?php 

    class ClassName 
    { 
     public function methodName() 
     { 
      // Body of method 
     } 
    } 
?> 

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

+3

https://en.wikipedia.org/wiki/Abstract_type#Use_of_abstract_types «Абстрактные типы полезны тем, что они могут использоваться для определения и обеспечения соблюдения протокола, набор операций, которые должны поддерживать все объекты, реализующие протокол». – ceejayoz

+1

Ну нет, он не дает одинаковых результатов. Любой дочерний класс не будет принудительно переопределять 'methodName'. Чтобы ответить ** почему **, это действительно зависит от вас, чтобы решить. Это похоже на вопрос о том, почему существуют ENUM, это помогает вам писать код поддерживаемого кода. –

+1

так, продолжая цитату @ ceejayoz - это поможет вам сохранить ваш код более чистым и строгим. – strangeqargo

ответ

2

Руководство программисту. Приведенные вами два примера кода эквивалентны только , если они используются правильно. Класс, содержащий методы заглушки, может быть запутан и использован, но он молча не выполняет то, что нужно сделать. Абстрактный класс вызывает ошибку, если не получен дочерний класс и все абстрактные методы переопределены.