介绍
在面向对象的程序设计中,抽象类是可以实例化的类,即不可能声明此类的对象。自版本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
热门文章
- 1月26日20.7M/S|Clash/V2ray/SSR/Shadowrocket免费节点每天更新订阅链接,代理机场推荐
- 动物医院名字大全集最新版英文(动物医院名字大全集最新版英文)
- 2月1日18.2M/S|SSR/Clash/Shadowrocket/V2ray免费节点每天更新订阅链接,代理机场推荐
- 猫三联是一针就可以治三种病吗多少钱(猫三联要多少钱第一针)
- Springmvc记录操作日志到数据库
- 猫咪到底打不打疫苗(猫打不打疫苗有什么区别)
- 3月3日20M/S|Clash/Shadowrocket/SSR/V2ray免费节点每天更新订阅链接,代理机场推荐
- 生产动物疫苗的公司(生产动物疫苗上市公司)
- 2月8日18.2M/S|SSR/V2ray/Clash/Shadowrocket免费节点每天更新订阅链接,代理机场推荐
- 2月21日19.1M/S|Clash/V2ray/SSR/Shadowrocket免费节点每天更新订阅链接,代理机场推荐