PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPオブジェクトの継承


はじめに

継承は、オブジェクト指向プログラミング方法論の重要な原則です。この原則を使用して、2つのクラス間の関係を定義できます。 PHPは、そのオブジェクトモデルで継承をサポートしています。

PHPは拡張を使用します 2つのクラス間の関係を確立するためのキーワード。

構文

class B extends A

ここで、Aは基本クラス(親とも呼ばれます)であり、Bはサブクラスまたは子クラスと呼ばれます。子クラスは、親クラスのパブリックメソッドと保護されたメソッドを継承します。子クラスは、継承されたメソッドのいずれかを再定義またはオーバーライドできます。そうでない場合、継承されたメソッドは、子クラスのオブジェクトで使用されたときに、親クラスで定義された機能を保持します。

親クラスの定義は、子クラスの定義よりも前に行う必要があります。この場合、スクリプトではクラスBの定義の前にAクラスの定義を表示する必要があります。

<?php
class A{
   //properties, constants and methods of class A
}
class B extends A{
   //public and protected methods inherited
}
?>

自動ロードが有効になっている場合、親クラスの定義は、クラススクリプトをロードすることによって取得されます。

継承の例

次のコードは、子クラスが親クラスのパブリックメンバーと保護されたメンバーを継承することを示しています

<?php
class parentclass{
   public function publicmethod(){
      echo "This is public method of parent class\n" ;
   }
   protected function protectedmethod(){
      echo "This is protected method of parent class\n" ;
   }
   private function privatemethod(){
      echo "This is private method of parent class\n" ;
   }
}
class childclass extends parentclass{
   public function childmethod(){
      $this->protectedmethod();
      //$this->privatemethod(); //this will produce error
   }
}
$obj=new childclass();
$obj->publicmethod();
$obj->childmethod();
?>

出力

これにより、次の結果が得られます。 −

This is public method of parent class
This is protected method of parent class
PHP Fatal error: Uncaught Error: Call to private method parentclass::privatemethod() from context 'childclass'

メソッドのオーバーライドの例

親クラスから継承されたメソッドが子クラスで再定義された場合、新しい定義が以前の機能をオーバーライドします。次の例では、publicmethodが子クラスで再度定義されています

<?php
class parentclass{
public function publicmethod(){
   echo "This is public method of parent class\n" ;
}
protected function protectedmethod(){
   echo "This is protected method of parent class\n" ;
}
private function privatemethod(){
   echo "This is private method of parent class\n" ;
}
}
class childclass extends parentclass{
   public function publicmethod(){
      echo "public method of parent class is overridden in child class\n" ;
   }
}
$obj=new childclass();
$obj->publicmethod();
?>

出力

これにより、次の結果が得られます。 −

public method of parent class is overridden in child class

階層継承

PHPは多重継承をサポートしていません。したがって、クラスは2つ以上のクラスを拡張できません。ただし、次のように階層継承をサポートしています。

<?php
class A{
   function test(){
      echo "method in A class";
   }
}
class B extends A{
   //
}
class C extends B{
   //
}
$obj=new C();
$obj->test();
?>

出力

次の結果が表示されます

method in A class

  1. C#のオブジェクトクラス

    Objectクラスは、C#のすべてのクラスの基本クラスです。 C#では次のメソッドがあります。 Sr.No メソッドと説明 1 Equals(Object) 指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判別します。 2 Equals(Object、Object、 指定されたオブジェクトインスタンスが等しいと見なされるかどうかを決定します。 3 Finalize() オブジェクトがリソースを解放しようとすることを許可します 4 GetHashCode() デフォルトのハッシュ関数。 5

  2. C#のスタッククラス

    スタッククラスは、後入れ先出しのオブジェクトのコレクションを表します。アイテムへの後入れ先出しアクセスが必要な場合に使用されます。 以下はStackクラスのプロパティです- カウント- スタック内の要素の数を取得します。 以下はStackクラスのメソッドです- Sr.No。 メソッドと説明 1 public virtual void Clear(); スタックからすべての要素を削除します。 2 public virtual bool contains(object obj); 要素がスタックにあるかどうかを判別します。 3