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

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

条件: 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;

//输出:张三李四

最新文章

  1. 如何利用 Visual Studio 自定义项目或工程模板
  2. angular.extend()和 angular.copy()的区别
  3. 转JAVA2
  4. 零配置Socket TCP消息通讯服务容器EC
  5. VS .sln .csproj 文件的右键编译
  6. js中加密及设置cookie
  7. RSA加密(跨平台通用的)
  8. 我的Photoshop第一个作品
  9. [CODEVS1258]关路灯
  10. [实战]挖掘CSRF姿势
  11. 检查DISPLAY设置时Xlib出现No protocol specified错误
  12. Oozie时出现Exception in thread "main" java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0?
  13. Problem J
  14. Java面试题技术类
  15. html button 点击链接
  16. ASP.NET Web API Basic Identity 中的基本身份验证
  17. 利用DNSLOG获取看不到的信息(给盲注带上眼镜)
  18. springboot整合dubbox与zookeeper
  19. Scala:Object-Oriented Meets Functional
  20. [daily][archlinux] 本地字符乱码, 无法显示中文

热门文章

  1. pomodoro源码
  2. TCP/IP详解 卷一(第十九章 TCP的交互数据流)
  3. MYSQL总结之sql语句大全
  4. Delphi 数据类型列表
  5. asp.net core mvc视频A:笔记3-3.Model与强类型视图
  6. .Net开发复习与总结
  7. Windows 清除系统垃圾文件
  8. void 指针的转换
  9. tensorflow-gpu 1.13 提示找不到 libcublas.so.10.0 的问题
  10. Vim使用个人心得