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 />";