ホームページ > バックエンド開発 > PHPの問題 > php は親クラスを呼び出しません

php は親クラスを呼び出しません

王林
リリース: 2023-05-07 10:41:07
オリジナル
501 人が閲覧しました

PHP の継承は非常に強力な機能であり、サブクラスが親クラスのプロパティとメソッドを継承できるため、コードを繰り返し記述するという問題が回避されます。実際の開発プロセスでは、特定のニーズを満たすために、サブクラス内の親クラスのメソッドを書き直す必要があることがよくあります。しかし、親クラスのメソッドを呼び出す必要がない場合もあります。

PHP では、メソッドをオーバーライドするときに、親クラスのメソッドを呼び出す必要はありません。サブクラスに同じ名前のメソッドを実装すると、このメソッドは親クラスの同じ名前のメソッドをオーバーライドします。親クラスのメソッドを使用する必要がある場合は、次の 2 つのメソッドを使用できます。

  1. 親クラスのメソッドを呼び出すには、parent キーワードを使用します。

サブクラス A のメソッドでオーバーライドする場合は、parent キーワードを使用して親クラスのメソッドを呼び出すことができます。

class ParentClass {
    public function func() {
        echo 'ParentClass';
    }
}

class SubClass extends ParentClass {
    public function func() {
        parent::func();
        echo 'SubClass';
    }
}

$obj = new SubClass();
$obj->func();  // 输出:ParentClass SubClass
ログイン後にコピー

上記のコードでは、まず親クラスParentClassと、親クラスParentClassを継承するサブクラスSubClassを定義します。サブクラスで親クラスのメソッド func() をオーバーライドし、parent::fun() ステートメントを使用して親クラスのメソッドを呼び出します。 $obj->func() を実行すると、最初に親クラスのメソッド内容が出力され、次にサブクラスのメソッド内容が出力されます。

  1. 親キーワードを使用しない

サブクラス内のメソッドをオーバーライドするが、親クラスのメソッドの内容を使用する必要がない場合は、次のこともできます。 not 親キーワードを使用します。具体的な実装方法は次のとおりです。

class ParentClass {
    public function func() {
        echo 'ParentClass';
    }
}

class SubClass extends ParentClass {
    public function func() {
        echo 'SubClass';
    }
}

$obj = new SubClass();
$obj->func();  // 输出:SubClass
ログイン後にコピー

上記のコードは前のコードと似ていますが、サブクラスで親クラスのメソッドを書き換えるときに、parent::fun() ステートメントを使用して呼び出しを行わない点が異なります。親クラスのメソッド。 $obj->func() を実行すると、サブクラスのメソッド内容のみが出力され、親クラスのメソッド内容は出力されません。

親クラスのコンストラクターをサブクラスで書き換える場合は、サブクラスのコンストラクター内で親クラスのコンストラクターを呼び出す必要があり、そうしないとサブクラスのオブジェクトが生成されないことに注意してください。

class ParentClass {
    public $name;

    public function __construct($name) {
        $this->name = $name;
    }
}

class SubClass extends ParentClass {
    public function __construct($name) {
        parent::__construct($name);
    }
}

$obj = new SubClass('Tom');
echo $obj->name;  // 输出:Tom
ログイン後にコピー

上記のコードでは、まず親クラスParentClassと、親クラスParentClassを継承するサブクラスSubClassを定義します。サブクラスで親クラスのコンストラクターを書き換え、parent::__construct($name) ステートメントを使用して親クラスのコンストラクターを呼び出します。サブクラス オブジェクト $obj を生成すると、サブクラスのコンストラクターが呼び出され、parent::__construct($name) を通じて親クラスのコンストラクターが呼び出され、サブクラスの属性に値が割り当てられます。最後に、サブクラスの属性値 $obj->name を出力します。これは「Tom」であることがわかります。

要約すると、サブクラスで親クラスのメソッドをオーバーライドするときに、親クラスのメソッドのコンテンツを使用する必要がある場合は、parent キーワードを使用して親クラスのメソッドを呼び出すことができます。その必要がない場合は、parent キーワードを使用して親クラスのメソッドを呼び出すことができます。親クラスのメソッド コンテンツ、メソッド コンテンツを使用すると、サブクラスのメソッドを直接オーバーライドできます。いずれにせよ、親クラスのメソッドの呼び出しの問題は適切に処理されます。

以上がphp は親クラスを呼び出しませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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