2016-06-07 59 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

对程序员的指导。如果使用正确,您给出的两个代码示例仅等同于可以对包含存根方法的类进行例化和使用,但它默默无法完成需要完成的任务。抽象类将引发错误,除非派生子类并覆盖所有抽象方法。