码迷,mamicode.com
首页 > Web开发 > 详细

php类和对象(二)

时间:2016-04-29 14:15:17      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

面向对象第三大特性:多态

概念: 当父类引用指向子类实例的时候,由于子类对父类函数进行了重写,导致我们在使用该引用取调用相应方法时表现出的不同

条件: 1.必须有继承

2.子类必须对父类的方法进行重写

多态在弱类型语言中表现不明显,在强类型语言中表现比较明显,在php中不用考虑.

class Ren

{

  public $name;

  public $sex;

  function say()

  {

    echo "hello";

  }

}

class China extends Ren

{

  function say()

  {

    echo "你好";

  }

}

$r =new Ren();

$r1 =new China();

多态在强类型语言中可用父类引用指向子类的实例,php不用规定变量的类型,多态不明显.

函数重载:

1.方法名必须一样

2.函数里面参数个数不同

3.如果参数个数相同,类型不同

函数重载只在强类型语言中有,弱类型语言中没有

php是弱类型语言,php有可变参数的函数,且不用规定参数类型,不满足函数重载的条件.

function say()

{

  echo "hello";

}

function say($a)

{

  echo $a."hello";

}

function say($a,$b)

{

  echo $a.$b."hello";

}

三个say()方法,随参数个数不同,调用的函数也不同.

__tostring()方法:   输出类的一些描述

function __tostring()

{

  return "这个对象包含变量name和sex,一个say方法";

}

$r= new Ren();

echo $r;    输出return值

对象的克隆:

$r=new Ren();

$r->name="张三";

$r1 =clone $r;    //克隆对象

var_dump($r1);

在克隆时,想要对克隆的新对象中添加一些特殊的东西,需要在Ren类中加入__clone方法

function __clone()

{

  $this->name="李四";     //$this是复本(克隆之后的新对象)

}

echo $r->name;

echo $r1->name;

输出:张三李四

 

php类和对象(二)

标签:

原文地址:http://www.cnblogs.com/xinghun/p/5444896.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!