継承: オブジェクト A が別のオブジェクト B のメンバーを使用する場合、A オブジェクトは B オブジェクトを継承すると言います。
ヒント: 継承の概念はオブジェクトに反映され、構文はクラスに反映されます。クラス B は A { } を拡張します。
<?php class Goods{ public $goodsName; public $price; public function sayName($goodsName){ $this->goodsName=$goodsName; echo $this->goodsName; } } class Books extends Goods{ public function sayPrice($price){ $this->price=$price; echo $this->price.'人民币'; } } $book1=new Books; $book1->sayName('php开发'); $book1->sayPrice('156.47');
構文の意味は、オブジェクト指向構文におけるコードの再利用です。
instanceof、特定の型のインスタンスかどうか (Instanceof は +-*/ と同じ概念を持ち、演算子です)
<?php class AmParent{ } class AmChild extends AmParent{ } $amChild=new AmChild; var_dump( $amChild instanceof AmChild); var_dump( $amChild instanceof AmParent);
演算結果:
bool(true)
bool(true)
、オーバーライドします。これは現象であり、継承のみが発生します (この状況を利用するか回避します)
サブクラスと親クラスに同じ名前のメンバー (プロパティ、メソッド) がある場合、サブクラス オブジェクトをインスタンス化するときに、それらのもののみを取得しますサブクラスで定義されているメンバーの皆さん、それをリライトと呼んでください。
ヒント:
書き換えは置き換えではありません!
2 つの異なる Sayprice が存在します。 Book クラス オブジェクトを通じて、現在表示されているプロパティまたはメソッドを取得します。これは、最も近い場所を上方に検索するプロセスと似ています。
<?php class Goods{ public $goodsName; public $price; public function sayPrice($price){ $this->price=$price; echo $this->price.'没有货币单位'; } } class Books extends Goods{ public function sayPrice($price){ $this->price=$price; echo $this->price.'人民币'; } } //$good=new Goods; //$good->sayPrice('96.47'); echo '<hr/>'; $book1=new Books; $book1->sayPrice('156.47');
実行結果:
156.47 RMB
親、親クラス
書き換えると、親クラスのコードは実行されなくなります。
親クラスとサブクラスの同じ名前のメソッドはオーバーライドされるため、構築メソッドなど一部のメソッドは確実に書き換えられます。
<?php class Goods { public $goods_name = 'ITCAST';//名字 public $goods_price;//商品价格 public function __construct($name, $price) { $this->goods_name = $name; $this->goods_price = $price; } } class Book extends Goods { public $author;//作者 public $publisher;//出版社 public function __construct($name, $price,$author,$publisher) { parent:: __construct($name, $price); $this->author = $author; $this->publisher = $publisher; } } $book1=new Book('phpphpphp',88.8,'new','Bejjing publisher'); var_dump($book1);
操作結果:
object(Book)#1 (4) { [“author”]=> string(3) “new” [“publisher”]=> string(17) “Bejjing publisher” [“goods_name”]=> string(9) “phpphpphp” [“goods_price”]=> float(88.8) }
親クラスのコンストラクターメソッドは、サブクラスから見れば単なる通常のメソッドです。
上記は、PHP オブジェクト指向構文 3 の継承の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。