精华内容
下载资源
问答
  • 2021-04-12 17:44:05

    PHP5中实现多态的两种方法实例

    function __construct($_name) {

    $this->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;

    更多相关内容
  • PHP使用组合实现多态

    2021-04-12 17:44:05
    * WEB开发笔记 www.chhua.com 每日练习之PHP使用组合实现类的多态?*//*?* 类说明:某大学开两门课程,一个是PHP,一个是JAVA,规定不同的价格?*/abstract class lesson {//定义一个抽象基类?protected $lessonType;?...

    /*

    ?* WEB开发笔记 www.chhua.com 每日练习之PHP使用组合实现类的多态

    ?*/

    /*

    ?* 类说明:某大学开两门课程,一个是PHP,一个是JAVA,规定不同的价格

    ?*/

    abstract class lesson {//定义一个抽象基类

    ?protected $lessonType;

    ?private $selectCost;

    ?public function __construct($type=1,costClass $costclass){

    ??$this->lessonType=$type;

    ??$this->selectCost=$costclass;

    ?}

    ?

    ?public function cost(){//计算学费

    ??return $this->selectCost->cost();

    ?}

    ?

    ?public function getType(){//返回类型字符串

    ??????? return $this->selectCost->getType();

    ?}

    }

    //======================以下是为lesson基类的__construct 创建 costClass 类型的功能实现参数

    abstract class costClass {

    ??? abstract function cost();

    ??? abstract function getType();

    }

    class phpcost extends costClass{

    ?function cost(){

    ??return 30;

    ?}

    ?function getType(){

    ??return “Lesson For PHP”;

    ?}

    }

    class javacost extends costClass{

    ?function cost(){

    ??return 50;

    ?}

    ?function getType(){

    ??return “Lesson For JAVA”;

    ?}

    }

    //========================以下是实例化最终对象

    class lessonPHP extends lesson{

    ?public function getFeiyong(){//自己的特性方法

    ??echo $this->cost();

    ?}

    }

    class lessonJAVA extends lesson{

    ?public function getLessonName(){//自己的特性方法

    ??echo $this->getType();

    ?}

    }

    $phpLesson=new lessonPHP(1,new phpcost());

    $javaLesson= new lessonJAVA(2,new javacost());

    $phpLesson->getFeiyong();

    $javaLesson->getLessonName();

    /*

    ?*注:以上就是通过用PHP组合来实现多态的最简单的例子。各个类之间的功能是独立的,降低耦合

    ?*

    ?*/

    ?>

    自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

    本文链接地址: PHP使用组合实现多态 http://www.chhua.com/web-note760

    相关笔记

    更多

    展开全文
  • 多态这个概念,在Java中指的是变量可以指向的对象的类型,可是变量声明类型的子类。对象一旦创建,它的类型是不变的,多态的是变量
  • PHP中的多态

    2021-03-23 22:30:54
    本篇文章主要介绍PHP中的多态,感兴趣的朋友参考下,希望对大家有所帮助。多态定义:只关心一个接口或者基类,而不关心一个对象的具体类。(同一类型,不同结果)这里两个例子:第一个,我们发现,基类定义了标准,...

    本篇文章主要介绍PHP中的多态,感兴趣的朋友参考下,希望对大家有所帮助。

    多态定义:只关心一个接口或者基类,而不关心一个对象的具体类。(同一类型,不同结果)

    这里两个例子:

    第一个,我们发现,基类定义了标准,子类进行了自我规则的实现。这是多态的一个要求。同时,这是满足重写;实际上这是不同类的不同表现;没有严格满足一个接口,或者基类编程。因为你调用的时候不是 stu->showGrade() 而是各自自己的方法;

    class stu{

    public function showGrade(){

    echo "base class";

    }

    }

    class xiaomin extends stu{

    public function showGrade(){

    echo "is son show 80";

    }

    }

    class xiaoli extends stu{

    public function showGrade(){

    echo "is son show 60";

    }

    }

    function doit($obj){

    if(get_class($obj) != "stu"){

    $obj->showGrade();

    }

    }

    doit(new xiaoli());

    doit(new xiaomin());

    第二个例子:dovoice 参数规定了$obj 为animal,意识就是用接口 接受了 实现类对象。了向上转型。这就符合同一类型,不同结果了,这就是多态;

    实际上在Java中 会是 animal a = new dog();这样子的;因为PHP 是若类型语言。没有对象转型机制。

    interface animal{

    public function voice();

    }

    class cat implements animal{

    public function voice(){

    echo "miao~~~
    ";

    }

    }

    class dog implements animal{

    public function voice(){

    echo "wang ~~~
    ";

    }

    }

    function dovoice(animal $obj){

    $obj->voice();

    }

    dovoice(new dog());

    dovoice(new cat());

    总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

    相关推荐:

    展开全文
  • 主要介绍了PHP基于接口技术实现简单的多态应用,结合完整实例形式分析了php接口的定义、继承、调用及多态的相关实现技巧,需要的朋友可以参考下
  • php教程 类中多态的应用Instanceof:用来测定一个给定的对象是否来自指定的对象类class A{}class B{}$thing=new A();//return trueif ($thing instanceof A) {echo ‘A’;}//return falseif ($thing instanceof B) {...

    php教程 类中多态的应用

    Instanceof:用来测定一个给定的对象是否来自指定的对象类

    class A{}

    class B{}

    $thing=new A();

    //return true

    if ($thing instanceof A) {

    echo ‘A’;

    }

    //return false

    if ($thing instanceof B) {

    echo ‘B’;

    }

    ?>

    运行结果:

    A

    header(“Content-Type:text/html;charset=UTF-8”);

    interface MyUsb{

    function type();

    function alert();

    }

    class Zip implements MyUsb{

    function type(){

    echo “2.0”;

    }

    function alert(){

    echo “正在检查U盘驱动”;

    }

    }

    class Mp3 implements MyUsb{

    function type(){

    echo “1.0”;

    }

    function alert(){

    echo “正在检查Mp3驱动”;

    }

    }

    class Mypc{

    function PcUsb($what)

    {

    $what->type();

    $what->alert();

    }

    }

    $pc=new Mypc();

    $zip=new Zip();

    $mp3=new Mp3();

    $pc->PcUsb($zip);//当插上的是U盘的时候

    echo “

    “;

    $pc->PcUsb($mp3);//当插上的是MP3的时候

    ?>

    运行结果:

    2.0正在检查U盘驱动

    1.0正在检查Mp3驱动

    对象引用都是一样的不分父类引用,还是子类引用。 我们现在来看一个例子,首先还是要使用多态就要有父类对象和子类对象的关系。做一 个形状的接口或是抽象类做为父类,里面有两个抽象方法,一个求周长的方法,另一个是求 面积的方法;这接口的子类是多种不同的形状,每个形状又都有周长和面积,又因为父类是 一个接口,所以子类里面就必须要实现父类的这两个周长和面积的抽象方法,这样做的目的 是每种不同形状的子类都遵守父类接口的规范,都要有求周长和求面积的方法。

    代码如下:

    //定义了一个形状的接口,里面有两个抽象方法让子类去实现

    interface Shape{

    function area();

    function perimeter();

    }

    //定义了一个矩形子类实现了形状接口中的周长和面积

    class Rect implements Shape{

    private $width;

    private $height;

    function __construct($width, $height){

    $this->width=$width;

    $this->height=$height;

    }

    function area(){

    return “矩形的面积是:”.($this->width*$this->height);

    }

    function perimeter(){

    return “矩形的周长是:”.(2*($this->width+$this->height));

    }

    }

    //定义了一个圆形子类实现了形状接口中的周长和面积

    class Circular implements Shape{

    private $radius;

    function __construct($radius){

    $this->radius=$radius;

    }

    function area(){

    return “圆形的面积是:”.(3.14*$this->radius*$this->radius);

    }

    function perimeter(){

    return “圆形的周长是:”.(2*3.14*$this->radius);

    }

    }

    //把子类矩形对象赋给形状的一个引用

    $shape=new Rect(5, 10);

    echo $shape->area().”

    “;

    echo $shape->perimeter().”

    “;

    //把子类圆形对象赋给形状的一个引用

    $shape=new Circular(10);

    echo $shape->area().”

    “;

    echo $shape->perimeter().”

    “;

    ?>

    上例执行结果:

    执行结果

    矩形的面积是:50

    矩形的周长是:30

    圆形的面积是:314

    圆形的周长是:62.8

    通过上例我们看到,把矩形对象和圆形对象分别赋给了变量$shape,调用$shape 引用中

    的面积和周长的方法,出现了不同的结果,这就是一种多态的应用,其实在我们PHP 这种弱

    类形的面向对象的语言里面,多态的特性并不是特别的明显,其实就是对象类型变量的变项

    应用。

    www.bkjia.comtrueTechArticlephp教程 类中多态的应用 Instanceof:用来测定一个给定的对象是否来自指定的对象类 ?php class A{} class B{} $thing=new A(); //return true if ($thing instanc…

    展开全文
  • * WEB开发笔记 www.chhua.com 每日练习之PHP设计模式继承的实现?*//*?* 类说明:某大学开两门课程,一个是PHP,一个是JAVA,规定不同的价格?*/abstract class lesson {//定义一个抽象基类?protected $lessonType;?...
  • 多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得...1.什么是多态 多 态(Polymorphism)按字面上意思理解就是“多种形状”。可以理解为多种表现形式,也即“一个对外接口,多个内部实现方法”。在
  • php怎么实现多态

    2020-03-06 11:28:27
    php怎么实现多态? 在PHP5中,变量的类型是不确定的,一个变量可以指向任何类型的数值、字符串、对象、资源等。我们无法说PHP5中多态的是变量。 我们只能说在PHP5中,多态应用在方法参数的类型提示位置。 一个类...
  • PHP多态如何实现

    2021-03-23 22:30:35
    PHP多态如何实现PHP是一种HTML内嵌式的,用来制作动态网页的服务器端的脚本语言。以下是百分网小编整理的PHP多态如何实现的内容,欢迎学习!1 PHP语言介绍PHP是一种HTML内嵌式的,用来制作动态网页的服务器端的...
  • java是如何实现多态

    2021-03-01 08:33:58
    多态就是指一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。 (推荐学习:java课程)因为在程序运行时才确定具体的类,这样,不用修改源...
  • 本文实例讲述了PHP面向对象多态实现方法。分享给大家供大家参考,具体如下:多态:父类引用指向子类对象(面向对象中能够根据使用类的上下文(使用输入不同的类调用不同类的方法)来重新定义或改变类的性质和行为。);...
  • 1.重载的实现:方法1:用__call()方法今天遇到一个头疼的问题,如何在PHP实现方法重载(包括构造器重载).查阅了很多资料,直接重载是无法实现的.但是可以通过__call()方法来变相实现.实际上这个方法我认为很差.是PHP...
  • PHP的最新发行版本中已经实现了对迟绑定的支持。当然,在使用其迟绑定功能时还存在很多问题。如果你使用的是更旧版本的PHP(我的服务器上运行的是PHP 5.0.1版本),那么你可能发现其中缺乏对于迟绑定的支持。因此,请...
  • java中实现多态的方式

    千次阅读 2021-03-06 04:02:30
    Java中实现多态的方式:1、接口实现;2、继承父类进行方法重写;3、同一个类中进行方法重载。多态存在的必要条件:1、要有继承;2、要有重写;3、父类引用指向子类对象。多态的好处:1、可替换性(substitutability)...
  • Java多态的实现机制是什么Java中实现多态的机制是依靠父类或接口的引用指向子类,从而实现一个对象多种形态的特性,其父类的引用是在运行时动态的指向具体的实例,调用该引用的方法时,不是根据引用变量的类型中定义...
  • 继承继承是一种关联类的层次模型,它可以建立类之间的关系,并实现代码重用,方便系统扩展。 继承提供了一种明确表述共性的方法,是一个新类从现有的类中派生的过程。 继承产生的新类继承了原始类的特性,新类称为...
  • 记录练习,供我以后参考。...//面向对象抽象类多态实现 abstract class Employee{ abstract function continueToWork(); } class Sales extends Employee{ private function makeSalePlan(){ echo "make sal...
  • php多态

    2021-03-24 12:07:33
    二、php中的多态多态的概念一般是强类型语言来谈的,因为强类型语言它必须要声明参数类型,比如一个手电筒对象的打开方法其参数申明了只能是蓝光,就不能传其他光。但可以用父类渲染的方式使其多态,比如声明一个光的...
  • PHP多态代码实例

    2021-04-12 18:54:45
    (同一类型,不同结果)这里两个例子:第一个,我们发现,基类定义了标准,子类进行了自我规则的实现。这是多态的一个要求。同时,这是满足重写;实际上这是不同类的不同表现;没有严格满足一个接口,或者基类编程。...
  • 所谓多态,指的是不同的对象,执行相同的方法,而又取得不同的结果。...如下代码:有两个用户对象,student和teacher,两个对象都有.../** php实现多态的两种方式*///定义接口interface base{//获取namepublic function...
  • php多态实现

    千次阅读 2011-04-27 17:20:00
    此时就可以采用多态实现该类设计。   【示例】例举了通常采用流程控制语句实现不同类的处理。其代码如下所示。   <?php class painter{ //定义油漆工类 public function paintbrush(){ //定义油漆工...
  • 实例讲解PHP多态

    2021-04-20 12:26:52
    当你学习OOP面向对象的时候也许经常会接触到“多态”这个概念,但是总是学了又忘忘了又学,其实多态是面向对象中是一个很基础的概念,它是许多设计模式的组成部分,今天我们来通过一个实例重温和回顾下什么是多态。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,343
精华内容 4,537
关键字:

php实现多态