この記事の例では、PHP が親を実装して、親クラスのコンストラクター メソッドとオーバーライドされたメソッドを呼び出す方法を説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです:
サブクラスでコンストラクターを定義するときは、親クラスのコンストラクターにパラメーターを渡す必要があります。そうしないと、不完全に構築されたオブジェクトが取得される可能性があります。
header('Content-type:text/html;charset=utf-8');
// この記事からクラス名の頭文字を大文字にし、書き方を統一しました
class ShopProduct{ // クラスを宣言します
public $title // 属性を宣言します
パブリック $プロデューサーメイン名;
パブリック $プロデューサー名;
公開価格;
function __construct($title,$firstName,$mainName,$price){
$this -> title = $title; // 渡された値を title 属性に代入します。
$this -> プロデューサー名= $名;
$this -> プロデューサーメイン名 = $メイン名;
$this -> 価格 = $価格
}
function getProducer(){ //宣言メソッド
return "{$this -> プロデューサー名 }"."{$this -> プロデューサーメイン名}";
}
関数 getsummaryLine(){
$base = "{$this->title}( {$this->プロデューサーメイン名},";
$base .= "{$this->プロデューサー名} )";
$base を返します;
}
}
class CdProduct extends ShopProduct {
パブリック $playLenth;
function __construct($title,$firstName,$mainName,$price,$playLenth){
parent::__construct($title,$firstName,$mainName,$price);
$this ->playLenth= $playLenth;
}
関数 getPlayLength(){
$this を返す -> playLength;
}
関数 getsummaryLine(){
$base = "{$this->title}( {$this->プロデューサーメイン名},";
$base .= "{$this->プロデューサー名} )";
$base .= ":再生時間 - {$this->playLength} )";
$base を返します;
}
}
// クラスを定義します
クラス BookProduct は ShopProduct を拡張します {
パブリック $numPages;
function __construct($title,$firstName,$mainName,$price,$numPages){
parent::__construct($title,$firstName,$mainName,$price);
$this -> numPages= $numPages;
}
関数 getNumberOfPages(){
$this -> numPages を返します;
}
関数 getsummaryLine(){
$base = "{$this->title}( {$this->プロデューサーメイン名},";
$base .= "{$this->プロデューサー名} )";
$base .= ":ページ続き - {$this->numPages} )";
$base を返します;
}
}
?>
各サブクラスは、独自のプロパティを設定する前に、親クラスのコンストラクターを呼び出します。基本クラス (親クラス) は自身のデータのみを知っているため、サブクラスに関する情報を親クラスに伝えないようにする必要があります。これは、特定のサブクラスの情報を「」にする必要があるかどうかを考えてください。 confidential" の場合、その結果、親クラスはその情報を知っており、他のサブクラスはその情報を継承できるため、サブクラスの情報は機密に保たれません。
親は親クラスのオーバーライドされたメソッドを呼び出します
parent キーワードは、親クラスをオーバーライドする任意のメソッドで使用できます。親クラスのメソッドをオーバーライドするときは、親クラスの関数を削除するのではなく、現在のオブジェクトで親クラスのメソッドを呼び出すことで拡張できます。
上記のコードを見ると、2 つのサブクラスの getsummaryLine() メソッドで多くのコードが繰り返されていることがわかります。冗長な開発ではなく、ShopProduct クラスにすでに存在する機能を利用する必要があります。
コードをコピーします。コードは次のとおりです:
// 親クラス: ShopProduct
関数 getsummaryLine(){
$base = "{$this->title}( {$this->プロデューサーメイン名},";
$base .= "{$this->プロデューサー名} )";
$base を返します;
}
// サブクラス: CdProduct
関数 getsummaryLine(){
$base = 親::getsummaryLine();
$base .= ":再生時間 - {$this->playLength} )";
$base を返します;
}
// サブクラス: BookProduct
関数 getsummaryLine(){
$base = 親::getsummaryLine();
$base .= ":ページ続き - {$this->numPages} )";
$base を返します;
}
親クラス ShopProduct の getsummaryLine() メソッドの「コア」関数が完成しました。次に、サブクラスで親クラスのメソッドを呼び出し、概要文字列にデータを追加するだけで、メソッドの拡張が実現します。
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/956988.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/956988.html技術記事 PHPは親クラスのコンストラクタとオーバーライドされたメソッドを呼び出す親を実装する 前回の記事ではクラスの使い方について...
を中心に紹介します。