ホームページ  >  記事  >  バックエンド開発  >  PHP が親クラスのインスタンスを呼び出す親を実装する方法の詳細な説明

PHP が親クラスのインスタンスを呼び出す親を実装する方法の詳細な説明

伊谢尔伦
伊谢尔伦オリジナル
2017-07-08 10:24:252117ブラウズ

この記事の例では、PHP が親を実装して コンストラクター メソッド と親クラスのオーバーライドされたメソッドを呼び出す方法を説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです:

上書き: 再設計されました。

サブクラスでコンストラクターを定義するときは、親クラスのコンストラクターにパラメーターを渡す必要があります。そうしないと、不完全に構築された オブジェクト が得られる可能性があります。

親クラスのメソッドを呼び出すには、まず クラス自体を参照する方法を見つける必要があります。PHP は、このための parent キーワード を提供します。

parent は親クラスのコンストラクターを呼び出します

オブジェクトではなくクラスのメソッドを参照するには、-> の代わりに :: (2 つのコロン) を使用できます。

つまり、parent::construct() は、親クラスのconstruct() メソッドを呼び出すことを意味します。

前の記事「クラス継承を使用してコードの重複やその他の問題を解決する」のコードを変更して、各クラスが独自のデータのみを処理するようにします:


コードは次のとおりです:

<?php
header(&#39;Content-type:text/html;charset=utf-8&#39;);
// 从这篇开始,类名首字母一律大写,规范写法
class ShopProduct{    // 声明类
public $title; // 声明
属性
public $producerMainName;
public $producerFirstName;
public $price;
function construct($title,$firstName,$mainName,$price){
$this -> title = $title;    // 给属性 title 赋传进来的值
$this -> producerFirstName= $firstName; 
$this -> producerMainName = $mainName; 
$this -> price= $price; 
}
function getProducer(){    // 声明方法
return "{$this -> producerFirstName }"."{$this -> producerMainName}";
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
return $base;
}
}
class CdProduct extends ShopProduct {
public $playLenth;
function construct($title,$firstName,$mainName,$price,$playLenth){
parent::construct($title,$firstName,$mainName,$price);
$this -> playLenth= $playLenth;
}
function getPlayLength(){
return $this -> playLength;
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
$base .= ":playing time - {$this->playLength} )";
return $base;
}
}
// 定义类
class BookProduct extends ShopProduct {
public $numPages;
function construct($title,$firstName,$mainName,$price,$numPages){
parent::construct($title,$firstName,$mainName,$price);
$this -> numPages= $numPages;
}
function getNumberOfPages(){
return $this -> numPages;
}
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
$base .= ":page cont - {$this->numPages} )";
return $base;
}
}
 
?>

各サブクラスは前に呼び出されます。独自の属性の設定 親クラスのコンストラクター。基本クラス (親クラス) は自身のデータのみを知っているため、サブクラスに関する情報を親クラスに伝えないようにする必要があります。これは、特定のサブクラスの情報を「」にする必要があるかどうかを考えてください。 confidential" の場合、その結果、親クラスはその情報を知っており、他のサブクラスはその情報を継承できるため、サブクラスの情報は機密に保たれません。

parent は、親クラスのオーバーライドされたメソッドを呼び出します。

parent キーワードは、親クラスをオーバーライドする任意のメソッドで使用できます。親クラスのメソッドをオーバーライドするときは、親クラスの関数を削除するのではなく、現在のオブジェクトで親クラスのメソッドを呼び出すことで拡張できます。

上記のコードを見ると、2 つのサブクラスの getsummaryLine() メソッドで多くのコードが繰り返されていることがわかります。開発を繰り返す代わりに、ShopProduct クラスにすでに存在する関数を使用する必要があります。

// 父类:ShopProduct
function getSummaryLine(){
$base = "{$this->title}( {$this->producerMainName},";
$base .= "{$this->producerFirstName} )";
return $base;
}
// 子类:CdProduct
function getSummaryLine(){
$base = parent::getSummaryLine();
$base .= ":playing time - {$this->playLength} )";
return $base;
}
// 子类:BookProduct
function getSummaryLine(){
$base = parent::getSummaryLine();
$base .= ":page cont - {$this->numPages} )";
return $base;
}

We are 親クラス ShopProduct は、getsummaryLine() メソッドの「コア」関数を完了し、サブクラスで親クラス メソッドを呼び出して、さらにデータを概要

string

に追加します。そしてメソッドの拡張が実現します。

以上がPHP が親クラスのインスタンスを呼び出す親を実装する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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