PHPのリロード

巴扎黑
リリース: 2016-11-11 15:45:08
オリジナル
1377 人が閲覧しました



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.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート