首页 > 开发 > PHP > 正文

PHP抽象类基本用法示例

2024-05-04 22:41:42
字体:
来源:转载
供稿:网友

本文实例讲述了PHP抽象类基本用法。分享给大家供大家参考,具体如下:

<?php//抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。//只要有一个抽象方法,那么此类必须定义为抽象类。//抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。//在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。//抽象类不能定义私有方法,可以定义私有属性。//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。abstract class Employees{  protected $name = null;  function __construct($nameStr){    $this->name = $nameStr;  }  abstract public function work();  public function work1(){    echo "<p>$this->name</p>";  }  //function __destruct(){}}class Managers extends Employees{  public function __construct($nameStr){    parent::__construct($nameStr);  }  /*public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。    echo "<p>$this->name is working</p>";  }*/}//$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。$obj2 = new Managers('e2');//$obj2->work();

运行上述代码,会提示如下错误信息:

Fatal error: Class Managers contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Employees::work) in D:/phproot/test/ClassDemo.php on line 26

将错误提示位置及末尾位置代码注释删除后,改为如下代码:

<?php//抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。//只要有一个抽象方法,那么此类必须定义为抽象类。//抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。//在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。//抽象类不能定义私有方法,可以定义私有属性。//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。abstract class Employees{  protected $name = null;  function __construct($nameStr){    $this->name = $nameStr;  }  abstract public function work();  public function work1(){    echo "<p>$this->name</p>";  }  //function __destruct(){}}class Managers extends Employees{  public function __construct($nameStr){    parent::__construct($nameStr);  }  public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。    echo "<p>$this->name is working</p>";  }}//$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。$obj2 = new Managers('e2');$obj2->work();            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表