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 范围解析操作符 ::》。

本章节内容共分 17 部分:

  1. 1. PHP 类与对象
  2. 2. PHP 类的继承 extends 关键字
  3. 3. PHP 构造方法 __construct()
  4. 4. PHP 析构方法 __destruct()
  5. 5. PHP final 关键字
  6. 6. PHP 类的接口 interface 与 implements 关键字
  7. 7. PHP 类的访问控制与封装 public,protected,private 修饰符
  8. 8. PHP 自动加载类 __autoload() 方法
  9. 9. 范围解析操作符(::)
  10. 10. PHP 类的静态成员属性与静态方法 static 关键字
  11. 11. PHP 常量(const)
  12. 12. PHP 特殊方法 __set()、__get()、__isset() 与 __unset()
  13. 13. PHP 重载
  14. 14. PHP 重载方法 __call()
  15. 15. PHP 抽象方法与抽象类 abstract 关键字
  16. 16. PHP 对象克隆 clone 关键字与 __clone() 方法
  17. 17. PHP 对象的存储与传输(序列化 serialize 对象)

评论于2016-12-18日起不再显示。

5idev.com(我爱开发网) — 提供最好的 XHTML教程DIV+CSS教程JavaScript教程PHP教程ThinkPHP教程