ホームページ > バックエンド開発 > PHPチュートリアル > php: オブジェクトの継承とポリモーフィズムの例

php: オブジェクトの継承とポリモーフィズムの例

黄舟
リリース: 2023-03-12 11:20:02
オリジナル
1151 人が閲覧しました

この例では、MyObject クラスを使用して 2 つのサブクラス: Book と Elec を生成します。2 つのサブクラスは、異なる 構築メソッド を使用して 2 つのオブジェクト c_book と h_elec をインスタンス化し、情報を出力します

<?php

	/*父类*/
	class MyObject{
		
		public $object_name;								//名称
		public $object_price;								//价格
		public $object_num;									//数量
		public $object_agio;								//折扣
		
		function construct($name,$price,$num,$agio){
			
			$this -> object_name = $name;
			$this -> object_price = $price;
			$this -> object_num = $num;
			$this -> object_agio = $agio;
			
			
		}
		
		function showMe(){
			echo &#39;这句话不会显示。&#39;;
		}
		
	}
	/*  子类Book  */
	class Book extends MyObject{
		
		public $book_type;									//类别
		
		function construct($type,$num){
			
			$this -> book_type = $type;
			$this -> object_num = $num;
		}
		
		function showMe(){
			
			return &#39;本次新进&#39;.$this -> book_type.&#39;图书&#39;.$this -> object_num.&#39;<br>&#39;;
		}
	}
	/*  子类Elec  */
	class Elec extends MyObject{
	
		function showMe(){
			
			return &#39;热卖商品&#39;.$this -> object_name.&#39;<br>原价:&#39;.$this -> object_price.&#39;<br>特价:&#39;.$this -> object_agio * $this -> object_price;
		}
	}
	/*	实例化对象	*/
	$c_book = new Book(&#39;计算机类&#39;,1000);
	$h_elec = new Elec(&#39;待机王XX手机&#39;,1200,3,0.8);
	echo $c_book->showMe()."<br>";
	echo $h_elec->showMe();
	
	
?>
ログイン後にコピー

(1) サブクラスはすべてのメンバー変数を継承します。 コンストラクターを含む親クラスのメソッド。これが継承の実装です

(2) サブクラスが作成されると、PHPはまずサブクラス内のコンストラクターメソッドを検索します。サブクラスに独自のコンストラクターがある場合、PHP はサブクラスのコンストラクターの呼び出しを優先します。サブクラスにコンストラクターがない場合、PHP は親クラスのコンストラクターを呼び出します

(3) サブクラスは親クラスのメソッド showMe( ) をオーバーライドします。どちらのオブジェクトも showMe() メソッドを呼び出しますが、返される結果は 2 つの異なる情報です。これはポリモーフィズムの具現化です


以上がphp: オブジェクトの継承とポリモーフィズムの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート