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