ホームページ > バックエンド開発 > PHPの問題 > PHPのリロードとリライトの違いは何ですか?

PHPのリロードとリライトの違いは何ですか?

王林
リリース: 2023-02-23 17:26:02
転載
4804 人が閲覧しました

PHPのリロードとリライトの違いは何ですか?

書き換え:

は、サブクラスが親クラスのメソッドを継承し、そのサブクラスが内部で同じメソッドを定義している場合、新しく定義されたこのメソッドがオーバーライドされることを意味します。親クラスの継承メソッドであり、サブクラスは内部定義されたメソッドのみを呼び出すことができます。

次の要件があります:

1. 親クラスとサブクラスにまったく同じパラメーターと名前を持つメソッドがある場合、サブクラスのメソッドがオーバーライドされます。親クラス。クラスメソッド

メソッド カバレッジを達成するには、パラメーターに一貫性がある必要があります。パラメータの数が一致しない場合、エラーが報告されます (これには、上記のメソッドのオーバーロードが含まれます)。メソッド名が一致しない場合、上書きされるのはサブクラスの新しく定義されたメソッドのみです。

2. メソッド カバレッジを実装する場合、アクセス修飾子は異なっていてもかまいませんが、サブクラスのアクセス スコープは親クラスのアクセス スコープ以上である必要があります。

これはphpなどの言語の設計ルールです。私が理解しているのは、高いレベルにあるものにアクセスするほうが簡単で、低いレベルにあるものにアクセスしたい場合は、より高い権限が必要であるということです。

パラメータと名前は同じである必要があります。サブクラスが親クラスと同じ名前である必要はありません。

では、パラメーターと名前が同じであることが必要です。具体的には、パラメーターの数は親クラスと同じである必要がありますが、パラメーター名は同じである必要はありません。つまり、渡されるパラメータの名前は、渡される数値が同じであれば任意です。

コードを見てください:

<?php
class  shao
{
    public function sasa($name){
        echo $name,&#39;狗!<br/>&#39;;
    }
}
class zhen extends shao{
    public function aaa()
    {
        echo &#39;猫<br/>&#39;;
    }
}
$lli = new zhen();
$lli->aaa();
$lli->aaa(&#39;binghh&#39;);
?>
ログイン後にコピー
<?php
class fu
{
    public function text(){
        echo &#39;父类&#39;;
    }
    public  function  textt(){
        echo &#39;父亲&#39;;
}
}
class erzi extends fu{
    public function text()
    {
        parent::text();//我要父类的东西
        echo &#39;儿子&#39;;//重写

    }
}
$shili = new fu();
$erzi = new erzi();
$erzi->text();
?>
ログイン後にコピー

オーバーロード:

オーバーロードはクラス多態性の実装です。関数のオーバーロードとは、識別子が複数の関数名として使用され、同じ名前を持つこれらの関数が関数の番号またはパラメーターの型によって区別できるため、呼び出しに混乱が生じないことを意味します。つまり、呼び出された場合、メソッド名は同じでも、異なるパラメータに従って対応する関数を自動的に呼び出すことができます。

php を実装するのは簡単ではありません。

クラス内のメソッドに複数の効果を生成させることができ、渡されたさまざまなパラメーターに従ってさまざまなロジックを実行できます。

次の要件があります:

1. オーバーロードを使用する場合、同じメソッド名と異なるパラメーター形式を使用することによってのみ実現できます。パラメータの型が異なれば、パラメータの型、パラメータ番号、パラメータの順序も異なります (パラメータの型は異なる必要があります);

2. オーバーロードは、アクセス許可、戻り値の型、およびスローされた例外を通じて行うことはできません;
3.例外のタイプとメソッドの数はオーバーロードに影響しません。

<?php
class fu
{
    public function text(){
        echo &#39;父类&#39;;
    }
    public  function  textt(){
        echo &#39;父亲&#39;;
    }
}
class erzi extends fu
{

        function test($name)
        {
            //方法重载
            parent::text();//我要父类的东西
            echo "erzi",$name;//重写

        }
    }

$erzi = new fu();
$erzi-> text("123");
?>
ログイン後にコピー

オーバーライドはサブクラスと親クラスにのみ存在し、オーバーロードは 1 つのクラスに存在します。

オーバーライドは書き換えです

オーバーロードはオーバーロードです

書き換えとオーバーロードの詳細については、PHP 中国語 Web サイトを参照してください:

PHP ビデオ チュートリアル

以上がPHPのリロードとリライトの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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