PHP类抽象

2023年11月27日09:58:23

介绍

在面向对象的程序设计中,抽象类是可以实例化的类,即不可能声明此类的对象。自版本5.0起PHP支持abstarct类的概念

用abstract关键字定义的类将成为抽象类。此外,包含至少一个抽象方法的任何类也被视为抽象。

语法

<?php
class testclass{
   //
}
?>

如果我们尝试创建此类的对象,PHP解析器将引发如下错误:

$a=new testclass();
PHP Fatal error: Uncaught Error: Cannot instantiate abstract class testclass

抽象方法

抽象方法仅声明其签名,即其可见性,参数和带有类型提示的返回类型,并且不具有任何功能。继承此类抽象类的类必须重写(提供定义)所有抽象方法。子类中的对应方法必须带有与父类中相同的签名。如果子类不满足此条件,则PHP解析器将引发异常。现在可以实例化扩展抽象类的类,因此称为具体类

在下面的示例中,父类具有两个抽象方法,其中只有一个在子类中被重新定义。这导致错误如下-

示例

<?php
abstract class testclass{
   abstract function test1();
   abstract function hello();
}
class myclass extends testclass{
   function test1(){
      echo "Overrides parent test method";
   }
}
$a=new myclass();
?>

输出结果

以下是错误消息

PHP Fatal error: Class myclass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (testclass::hello)

带参数的抽象方法

用参数定义抽象方法时,必须在子类中使用相同数量的参数覆盖抽象方法

在下面的示例中,父类中的抽象方法具有两个参数。子类也使用两个参数定义相同的功能

示例

<?php
abstract class testclass{
   abstract function hello($name, $age);
}
class myclass extends testclass{
   function hello($name, $age){
      echo "My name is $name and my age is $age";
   }
}
$a=new myclass();
$a->hello("Ravi",20);
?>

输出结果

这将产生以下输出-

My name is Ravi and my age is 20

  • 更新时间:2023年11月27日09:58:23 ,共 1171 字。