PHP抽象类与接口的区别实例详解
php  /  管理员 发布于 7年前   152
本文实例讲述了PHP抽象类与接口的区别。分享给大家供大家参考,具体如下: 抽象类abstract 概念 定义为抽象的类不能被实例化。任何一个类,如果有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的类。 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法,这些方法的访问控制必须喝父类中一样或者更为宽松。 例如,某个抽象方法被声明为proteced,那么子类中的实现,就应该声明为protected或者public,而不能定义为private。 方法的调用方式必须匹配,即类型和所需参数数量必须一致,例如,子类定义了一个可选参数,而父类抽象方法中没有声明,则两者的声明并没有冲突。 特点 示例 示例一 结果输出 ConcreteClassOne ConcreteClassTwo 示例二 结果输出 Mr. Pacman 接口interface 概念 使用接口interface,可以指定某个类必须实现那些方法,但是不需要定义这些方法的具体内容。 要实现一个接口,使用implements操作符,类中必须实现接口中定义的所有方法。 特点 示例 示例一 、 实现接口 示例二 、 可扩充接口 示例三 、 继承多个接口 示例四 、使用接口常量 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。getValue() . "\n"; }}// 子类class ConcreteClassOne extends AbstractClass{ protected function getValue() { return "ConcreteClassOne"; } public function prefixValues($prefix) { return "{$prefix}ConcreteClassOne"; }}// 子类class ConcreteClassTwo extends AbstractClass{ protected function getValue() { return "ConcreteClassTwo"; } public function prefixValue($prefix) { return "{$prefix}ConcreteClassTwo"; }}// 实例化第一个子类$classOne = new ConcreteClassOne;$classOne->printOut();echo $classOne->prefixValue('FOO_') . "\n";// 实例化第二个子类$classTwo = new ConcreteClassTwo;$classTwo->printOut();echo $classTwo->prefixValue('FOO_') . "\n";
FOO_ConcreteClassOne
FOO_ConcreteClassTwoprefixName("Pacman") . "\n";echo $class->prefixName("Pacwoman") . "\n";
Mrs, Pacwomanvars[$name] = $var; } public function getHtml($template) { foreach($this->vars as $name => $value) { $template = str_replace('{' . $name . '}', $value, $template); } return $template; }}// 下面的写法是错误的,会报错,因为没有实现 getHtml()// Fatal error: Class BadTemplate contains 1 abstract methonds// and must therefore be declared abstaract (iTemplate::getHtml)class BadTemplate implements iTemplate{ private $vars = array(); public function setVariable($name, $var) { $this->vars[$name] = $var; }}
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号