`

PHP 重载

    博客分类:
  • php
php 
阅读更多


PHP 重载
一个类中的方法与另一个方法同名,但是参数不同,这种方法称之为重载方法。
很遗憾因为 PHP 是弱类型的语言, 所以在方法的参数中本身就可以接收不同类型的数据,又因为 PHP 的方法可以接收不定个数的参数,所以在 PHP 里面没有严格意义上的方法重载。
PHP 中的重载是指在子类里面定义了一个和父类同名的方法,且该方法将在子类中将把父类的方法覆盖。
在子类中,因为从父类继承过来的方法可能无法访问子类定义的属性或方法,所以有时候重载是必要的。
例子:
<?php
class Person {
    var $name;
    var $age;

    function say() {
        echo "我的名字叫:".$this->name."<br />";
	echo "我的年龄是:".$this->age;
    }
}

// 类的继承
class Student extends Person {
    var $school;    //学生所在学校的属性
	
    function say() {
        echo "我的名字叫:".$this->name."<br />";
        echo "我的年龄是:".$this->age."<br />";
        echo "我正在".$this->school."学习";
    }	
}

$t1 = new Student();
$t1->name = "张三";
$t1->age = "18";
$t1->school = "人民大学";
$t1->say();
?>
运行该例子,输出:
我的名子叫:张三
我的年龄是:18
我正在人民大学学习
提示
如果父类定义方法时使用了 final 关键字,则不允许被子类方法覆盖。
访问父类被覆盖的方法
可以通过 :: 符号来访问父类被覆盖的方法或成员属性:
function say() {
    parent::say();
    //或者
    Person::say();
    echo "我在".$this->school."上学<br />";


分享到:
评论

相关推荐

    PHP重载基础知识回顾

    主要介绍了PHP重载的相关知识,帮助大家更好的理解和复习php,感兴趣的朋友可以了解下

    php5 类与对象

    PHP 重载方法 __call() 15. PHP 抽象方法与抽象类 abstract 关键字 16. PHP 对象克隆 clone 关键字与 __clone() 方法 17. PHP 对象的存储与传输(序列化 serialize 对象) 18. php 设计模式:工厂模式和单例...

    关于PHP属性重载问题

    关于PHP的属性重载的问题,进行测试研究,证明private不继承下来。

    php面向对象全攻略 (八)重载新的方法

    12.重载新的方法 在学习PHP 这种语言中你会发现,PHP 中的方法是不能重载的,所谓的方法重载就是 定义相同的方法名,通过“参数的个数”不同或“参数的类型”不同,来访问我们的相同方法 名的不同方法。但是因为PHP ...

    php-fpm重启导致的程序执行中断问题详解

    业务接口 /3/xx/vgift/send 调用礼物系统 sendPresent 接口完成送礼, 之后写mongo,但是php error log 里却查不到任何mongo异常日志 写mongo没有异常,但是库里却没记录,推断只有2个可能 1是error log 丢日志...

    php继承中方法重载(覆盖)的应用场合

    主要介绍了php继承中方法重载(覆盖)的应用场合,以实例形式较为详细的分析了重载的用法与对应的适用情况及使用技巧,需要的朋友可以参考下

    解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题

    主要介绍了解决PHP Opcache 缓存刷新、代码重载出现的无法更新代码的问题,帮助大家更好的理解和学习php,感兴趣的朋友可以了解下

    PHP使用方法重载实现动态创建属性的get和set方法

    在PHP中,我们不能够直接通过方法名相同,签名不同的方法来实现方法重载,因为PHP是弱数据类型,不能很好的区分签名。但是,可以在PHP的类中运用__call()方法来实现方法重载。当调用一个类中并不存在的方法时,会...

    php-fpm-5.3.3-26.el6.x86_64.rpm

    PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。 作者:冬日大草原的黄昏 链接:https://www.jianshu.com/p/99d478ea1330 来源:简书 著作权归作者所有。商业转载请联系作者...

    php函数重载的替代方法–伪重载详解

    //确实,在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数 //在看到了func_get_arg,func_get_args,func_num_args,这三个函数的时候,你们是不是想起了什么?...

    PHP利用func_get_args和func_num_args函数实现函数重载实例

    主要介绍了PHP利用func_get_args和func_num_args函数实现函数重载的方法,实例展示了PHP实现重载的具体方法,是非常实用的技巧,需要的朋友可以参考下

    PHP实现的函数重载功能示例

    本文实例讲述了PHP实现的函数重载功能。分享给大家供大家参考,具体如下: 由于PHP是弱类型语言,因此函数的输入参数类型无法确定(可以使用类型暗示,但是类型暗示无法用在诸如整型,字符串之类的标量类型上),...

    PHP实现重载的常用方法实例详解

    本文实例讲述了PHP实现重载的常用方法。分享给大家供大家参考,具体如下: php是弱类型语言,并没有像JAVA这种强类型语言一样有重载。 重载一般来说就是拥有相同的函数名或方法名,但是参数列表却不同(包括参数个数...

    PHP和JAVA中的重载(overload)和覆盖(override) 介绍

    PHP不支持方法和操作符重载。JAVA不支持操作符的重载(但是“+”实际上是一种操作符重载)。 复制代码 代码如下: &lt;?php Class Father { public function fmeth1() { echo “fmeth1()… ”; } //public ...

    php面向对象的方法重载两种版本比较

    PHP5 虽然可以支持覆盖和重载,但重载在具体实现上,和其他语言还有较大的差别。 1,在 PHP4 中“模拟”重载 试看以下代码: &lt;?php //根据参数个数选择执行不同的方法(在 PHP4 中模拟”重载”(多态的一种) c

    nginx windows 1.13.9 php

    nginx 1.13.9 配置了php, 包含nginx的启动,关闭,重载的bat文件和php的启动,重新加载的bat,vbs文件。php进程用的端口号是9900.默认php7的安装是c:\php7.要修改php_start.vbs中php的路径。 createobject("wscript....

    PHP高级程序设计-模式-框架-测试

    详细描述:内容简介本书采用循... 试、部署和持续集成第三部分 SPL(标准PHP库) 第9章 SPL简介 第10章 SPL迭代器 第11章 SPL文件和目录处理 第12章 SPL数组重载 第13章 SPL异常第四部分 MVC模式 等 。。

    PHP100视频教程 20:PHP面向对象开发的学习(四)

    (非C++多继承)被继承的类我们叫做父类(基类)继承者成为子类(派生类)2、PHP继承的规则3、基类方法重载和父类方法访问 因为属于向下继承的原理,基类不能使用派生类里内容,这个时基类的一些方法不能完成我们的...

    SetterGetter:自动创建方法来保存数据

    这也称为 PHP 重载。 有关重载的更多信息: : 安装 老套 在您的项目中需要src/SetterGetter.php 。 作曲家 将此添加到您的 composer.json { " require " : { " bjarneo/settergetter " : " dev-master " } } ...

Global site tag (gtag.js) - Google Analytics