目次
phpは親クラスのコンストラクターとオーバーライドされたメソッドを呼び出す親を実装します
ホームページ バックエンド開発 PHPチュートリアル PHP はコンストラクター メソッドを呼び出す親と親クラスのオーバーライドされたメソッドを実装します_PHP チュートリアル

PHP はコンストラクター メソッドを呼び出す親と親クラスのオーバーライドされたメソッドを実装します_PHP チュートリアル

Jul 13, 2016 am 10:07 AM
parent php そして 成し遂げる 方法 移行

phpは親クラスのコンストラクターとオーバーライドされたメソッドを呼び出す親を実装します

この記事では主に親クラスのコンストラクターとオーバーライドされたメソッドを呼び出す親を実装するphpを紹介します 前回の記事では、クラス継承を使用してコードを解決しました。度重なる質問をもとに、親クラスの構築メソッドを呼び出して上書きする関連手法をさらに分析し、必要な友人が参照できるようにしました

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

上書き: 再設計されます。

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

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

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

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

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

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

コードをコピーします。コードは次のとおりです:

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 プログラミング設計に役立つことを願っています。

www.bkjia.com本当http://www.bkjia.com/PHPjc/956988.html技術記事 PHPは親クラスのコンストラクタとオーバーライドされたメソッドを呼び出す親を実装する 前回の記事ではクラスの使い方について...
を中心に紹介します。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

See all articles