• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php面向对象全攻略 (十五) 多态的应用_php基础

php 搞代码 3年前 (2022-01-26) 19次浏览 已收录 0个评论

多态的应用
多态是除封装和继承之外的另一个面向对象的三大特性之一,我个人看来PHP 中虽然可
以实现多态,但和C++还有Java 这些面向对象的语言相比,多态性并不是那么突出,因为PHP
本身就是一种弱类型的语言,不存在父类对象转化为子类对象或者是子类对象转化为父类对
象的问题,所以多态的应用并不是那么的明显;所谓多态性是指一段程序能够处理多种类型
对象的能力,比如说在公司上班,每个月财务发放工资,同一个发工资的方法,在公司内不
同的员工或是不同职位的员工,都是通过这个方法发放的,但是所发的工资都是不相同的。
所以同一个发工资的方法就出现了多种形态。对于面向对象的程序来说,多态就是把子类对
象赋值给父类引用,然后调用父类的方法,去执行子类覆盖父本文来源[email protected]搞@^&代*@码)网9搞代gaodaima码类的那个方法,但在PHP 里是
弱类型的,对象引用都是一样的不分父类引用,还是子类引用。
我们现在来看一个例子,首先还是要使用多态就要有父类对象和子类对象的关系。做一
个形状的接口或是抽象类做为父类,里面有两个抽象方法,一个求周长的方法,另一个是求
面积的方法;这接口的子类是多种不同的形状,每个形状又都有周长和面积,又因为父类是
一个接口,所以子类里面就必须要实现父类的这两个周长和面积的抽象方法,这样做的目的
是每种不同形状的子类都遵守父类接口的规范,都要有求周长和求面积的方法。
代码片段

 <BR><? <BR>//定义了一个形状的接口,里面有两个抽象方法让子类去实现 <BR>interface Shape{ <BR>function area(); <BR>function perimeter(); <BR>} <BR>//定义了一个矩形子类实现了形状接口中的周长和面积 <BR>class Rect implements Shape{ <BR>private $width; <BR>private $height; <BR>function __construct($width, $height){ <BR>$this->width=$width; <BR>$this->height=$height; <BR>} <BR>function area(){ <BR>return "矩形的面积是:".($this->width*$this->height); <BR>} <BR>function perimeter(){ <BR>return "矩形的周长是:".(2*($this->width+$this->height)); <BR>} <BR>} <BR>//定义了一个圆形子类实现了形状接口中的周长和面积 <BR>class Circular implements Shape{ <BR>private $radius; <BR>function __construct($radius){ <BR>$this->radius=$radius; <BR>} <BR>function area(){ <BR>return "圆形的面积是:".(3.14*$this->radius*$this->radius); <BR>} <BR>function perimeter(){ <BR>return "圆形的周长是:".(2*3.14*$this->radius); <BR>} <BR>} <BR>//把子类矩形对象赋给形状的一个引用 <BR>$shape=new Rect(5, 10); <BR>echo $shape->area()."<br>"; <BR>echo $shape->perimeter()."<br>"; <BR>//把子类圆形对象赋给形状的一个引用 <BR>$shape=new Circular(10); <BR>echo $shape->area()."<br>"; <BR>echo $shape->perimeter()."<br>"; <BR>?> <BR>


上例执行结果:
执行结果
矩形的面积是:50
矩形的周长是:30
圆形的面积是:314
圆形的周长是:62.8
通过上例我们看到,把矩形对象和圆形对象分别赋给了变量$shape,调用$shape 引用中
的面积和周长的方法,出现了不同的结果,这就是一种多态的应用,其实在我们PHP 这种弱
类形的面向对象的语言里面,多态的特性并不是特别的明显,其实就是对象类型变量的变项
应用。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php面向对象全攻略 (十五) 多态的应用_php基础
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址