PHP类抽象化

WBOY
发布: 2023-08-31 06:00:01
转载
1465 人浏览过

PHP类抽象化

简介

在面向对象编程中,抽象类是可以实例化的类,即不可能声明此类的对象。 PHP从5.0版本开始支持抽象类的概念

使用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
登录后复制

以上是PHP类抽象化的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!