php怎么实现多态

php5中,变量的类型是不确定的,一个变量可以指向任何类型的数值、字符串、对象、资源等。我们无法说php5中多态的是变量。

我们只能说在PHP5中,多态应用在方法参数的类型提示位置。

php怎么实现多态

一个类的任何子类对象都可以满足以当前类型作为类型提示的类型要求。

所有实现这个接口的类,都可以满足以接口类型作为类型提示的方法参数要求。

立即学习“PHP免费学习笔记(深入)”;

简单的说,一个类拥有其父类、和已实现接口的身份。

通过实现接口实现多态(推荐学习:PHP编程从入门到精通)

name;    }    public function setName($_name){        $this->name = $_name;    }}class UserAdmin{ //操作.    public static function  ChangeUserName(User $_user,$_userName){        $_user->setName($_userName);    }}$normalUser = new NormalUser();UserAdmin::ChangeUserName($normalUser,"Tom");//这里传入的是 NormalUser的实例.echo $normalUser->getName();?>

登录后复制

使用接口与组合模拟多继承

通过组合模拟多重继承。

在PHP中不支持多重继承,如果我们向使用多个类的方法而实现代码重用有什么办法么?

那就是组合。在一个类中去将另外一个类设置成属性。

下面的例子,模拟了多重继承。

接口实例

写一个概念性的例子。 我们设计一个在线销售系统,用户部分设计如下: 将用户分为,NormalUser, VipUser, InnerUser 三种。要求根据用户的不同折扣计算用户购买产品的价格。并要求为以后扩展和维护预留空间。

setName($_name);    }    function getName() {        return $this->name;    }    function setName($_name) {    $this->name = $_name;    }    function getDiscount() {        return $this->discount;    }    function getGrade() {        return $this->grade;    }}class NormalUser extends AbstractUser{    protected $discount = 1.0;    protected $grade = "Normal";}class VipUser extends AbstractUser{    protected $discount = 0.8;    protected $grade = "VipUser";}class InnerUser extends AbstractUser{    protected $discount = 0.7;    protected $grade = "InnerUser";}interface Product{    function getProductName();    function getProductPrice();}interface Book extends Product{    function getAuthor();}class BookOnline implements Book{    private $productName;    protected $productPrice;    protected $Author;    function __construct($_bookName) {        $this->productName = $_bookName;    }    function getProductName() {        return $this->productName;    }    function getProductPrice() {        $this->productPrice = 100;        return $this->productPrice;    }    public function getAuthor() {        $this->Author = "chenfei";        return $this->Author;    }}class Productsettle{    public static function finalPrice(User $_user, Product $_product, $number) {        $price = $_user->getDiscount() * $_product->getProductPrice() * $number;        return $price;    }}$number = 10;$book = new BookOnline("设计模式");$user = new NormalUser("tom");$price = Productsettle::finalPrice($user, $book, $number);$str = "您好,尊敬的" . $user->getName() . "
";$str .= "您的级别是" . $user->getGrade() . "
";$str .= "您的折扣是" . $user->getDiscount() . "
";$str .= "您的价格是" . $price;echo $str;?>

登录后复制

以上就是php怎么实现多态的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2155885.html

(0)
上一篇 2025年2月25日 06:38:13
下一篇 2025年2月21日 17:37:15

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php怎么识别真实ip

    php 里用来获取客户端 ip 的变量有这些: $_SERVER[‘HTTP_CLIENT_IP’] 这个头是有的,但是很少,不一定服务器都实现了。客户端可以伪造。(推荐学习:PHP编程从入门到精通) $_SERVE…

    2025年2月25日
    200
  • php怎么确保统计的数据正确

    本文实例讲述了php实现的统计数据功能。分享给大家供大家参考,具体如下: 统计,就是把基本的数据,整合起来。 用到sql的,有group by 功能,count功能,order by功能等等。 sql将收集的数据,进行统计分析。 立即学习“…

    2025年2月25日
    200
  • php做网站为什么比java快

    对比一下php和java开发网站的优劣。 1、开发网站最好选用一个比较成熟、资料比较多的CMS,因为自己开发后台工作量也不小,JAVA的CMS比PHP要少很多,所以更多的人会将网站开发转向PHP语言。 2、java EE是一个很重的平台,部…

    2025年2月25日
    200
  • ecshop支持php

    ecshop是一款b2c独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于php语言及mysql数据库构架开发的跨平台开源程序。最新版本为4.0.0。 ECShop是上海商派网络科技有限公司(ShopEx)旗下——B2C独立网店…

    2025年2月25日
    200
  • php用pdo好吗

    pdo —— php 数据对象(php data object)的缩写,作为一个为多种数据库提供统一的连接接口的方式pdo底层需要配合对应数据库的pdo数据驱动来操作数据库。pdo是当今php官方推荐的数据库连接方式,其优势在于: 1、PD…

    2025年2月25日 编程技术
    200
  • php用apache还是nginx

    首先我们来谈谈老朋友apache,apache http server(简称apache)是世界使用排名第一的web服务器软件,音译为阿帕奇,是apache软件基金会的一个开放源码web服务器,可以运行几乎所有的计算机平台,其次开放的api…

    2025年2月25日
    200
  • php序列化是什么意思

    序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。 PHP中的序列化和反序列化分别通过函数serialize()和un…

    2025年2月25日
    200
  • php析构函数什么时候调用

    析构函数何时被调用 析构函数在下边3种情况时被调用: 对象生命周期结束,被销毁时; 主动调用delete ;(推荐学习:PHP编程从入门到精通) 立即学习“PHP免费学习笔记(深入)”; 对象i是对象o的成员,o的析构函数被调用时,对象i的…

    2025年2月25日
    200
  • php为什么需要匿名函数

    匿名函数(anonymous functions),也叫闭包函数(closures),允许临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。 匿名函数目前是通过 Closure 类来实…

    2025年2月25日
    200
  • php微擎是什么

    微擎是一个php开发的  公众号,小程序 服务端 丰富功能的基础框架。现在不仅可以做小程序和公众号的服务端,还可以支持app。微擎是基于目前最流行的web2.0的架构(php+mysql),运行环境推荐使用linux(centos)+ ng…

    2025年2月25日
    200

发表回复

登录后才能评论