ホームページ  >  記事  >  バックエンド開発  >  PHP オブジェクト指向 - 親クラスを拡張するサブクラスのサンプルコード共有 (親クラスをリロードするサブクラス)

PHP オブジェクト指向 - 親クラスを拡張するサブクラスのサンプルコード共有 (親クラスをリロードするサブクラス)

黄舟
黄舟オリジナル
2017-03-25 10:00:441602ブラウズ

PHPでは、サブクラスが親クラスを継承するが、親クラスの属性やメソッドをある程度拡張する必要がある状況に遭遇します。このとき、サブクラスは再実行できます。ただし、親クラスのメソッドに数百行または数千行のコードが含まれている場合は、属性とメソッドを上書きするだけで済みます。 "parent class name::method" または "parent::method" を使用して、親クラスでオーバーライドされたメソッドを呼び出します。親クラスをリロードするための があり、その後、拡張する必要があるステートメント。

メソッドの書き換え
<?php
 class Person{
       public $name;       
       public function construct($name="" ){         
               $this->name=$name;                                             
        }        public  function say(){
             echo "我叫".$this->name  ;  
        } 

}?><?php
     class Student extends Person{
          public $name;               

          public function construct($name=""){
               $this->name =$name;
          }//这里定义了一个和父类中同名的方法,将父类中的说话方法覆盖并重写
    public  function say(){
             echo "我叫".$this->name .",今年25岁了" ;  
    } 
}?>

メソッドとアクセス許可の書き換え サブクラスが親クラスのメソッドをオーバーライドする場合、サブクラスでオーバーライドされたメソッドのアクセス許可は変更できないことに注意してください。親クラスのオーバーライドされたメソッドよりも低いアクセス権。たとえば、親クラスのメソッドのアクセス許可が保護されている場合、サブクラスでオーバーライドされるメソッドのアクセス許可は保護またはパブリックにする必要があります。親クラスのメソッドにパブリック権限がある場合、サブクラスでオーバーライドされるメソッドはパブリックのみとなります。つまり、サブクラスで親クラスのメソッドをオーバーライドする場合、そのメソッドには、親クラスのオーバーライドされたメソッドよりも高いアクセス許可が必要です。

オーバーライド時のパラメータの数 サブクラスは、親クラスとは異なる数のパラメータを持つことができます。たとえば、以下の

コンストラクターメソッド

では、追加のパラメータ $age が追加されます。

<?phpclass Student extends Person{

    public $name;    
    public $age;        

    public function construct($name="",$age=25){

         $this->name =$name;         $this->age =$age;

    }    public  function say(){

         echo "我叫".$this->name .",今年".$this->age."岁了" ;  

    } 

}?>
上記の例では、「メソッド」をオーバーライドすることで拡張を実現しています。

ただし、こうすることで上で述べた問題は解決しますが、実際の開発では、メソッドは 1 つのコードだけでも複数のコードでも構いません。たとえば、「person」クラスの「say()」メソッドには 100 行あります。このメソッドを上書きして、元の機能ともう少し追加の機能を保持したい場合は、元の 100 行のコードと、いくつかの拡張されたコードを書き直す必要がありますが、これは場合によっては非常に適切です。 、親クラスのメソッドは元のコードを参照できません。このとき、元のコードをどのように書き換えますか?解決策もあります。つまり、サブクラス メソッドで、親クラスでオーバーライドされたメソッドを呼び出すことができます。つまり、オーバーライドされたメソッドの元の関数を取得し、独自の関数の一部を追加することができます。親クラスのオーバーライドされたメソッドを呼び出すメソッドをサブクラスのメソッドに実装します:


1つは親クラスの「クラス名::」を使用して親クラスのオーバーライドされたメソッドを呼び出す方法です。 "parent::" を使用することです。親クラスでオーバーライドされたメソッドを呼び出してみます



メソッドの拡張

<?phpclass Student extends Person{

    public $name;    
    public $age;                                 

    public function construct($name="",$age=25){

        parent::construct($name,$age);        $this->age =$age;

    }    public  function say(){

        parent::say();        echo ",今年".$this->age."岁了" ;  

    } 

}?>
上記の内容は、単に属性とメソッドを

リロードするだけです

本当の意味での親クラスオーバーロードではなく、サブクラスが親クラスを拡張することとしか言えません。PHPにもオーバーロードという言葉がありますが、一般的な言語指向の言語とは意味が異なります。

以上がPHP オブジェクト指向 - 親クラスを拡張するサブクラスのサンプルコード共有 (親クラスをリロードするサブクラス)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。