ホームページ > バックエンド開発 > PHPチュートリアル > PHP オブジェクト指向構文 3 の継承の拡張

PHP オブジェクト指向構文 3 の継承の拡張

黄舟
リリース: 2023-03-04 11:52:02
オリジナル
1306 人が閲覧しました

継承: オブジェクト 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.&#39;人民币&#39;;
    }
}
$book1=new  Books;
$book1->sayName(&#39;php开发&#39;);
$book1->sayPrice(&#39;156.47&#39;);
ログイン後にコピー

構文の意味は、オブジェクト指向構文におけるコードの再利用です。
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.&#39;没有货币单位&#39;;
    }
    }
class Books extends Goods{
public function sayPrice($price){
    $this->price=$price;
    echo $this->price.&#39;人民币&#39;;
    }
}
//$good=new Goods;
//$good->sayPrice(&#39;96.47&#39;);
echo &#39;<hr/>&#39;;
$book1=new  Books;
$book1->sayPrice(&#39;156.47&#39;);
ログイン後にコピー

実行結果:

156.47 RMB

親、親クラス
書き換えると、親クラスのコードは実行されなくなります。
親クラスとサブクラスの同じ名前のメソッドはオーバーライドされるため、構築メソッドなど一部のメソッドは確実に書き換えられます。

<?php 
class Goods {
    public $goods_name = &#39;ITCAST&#39;;//名字
    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(&#39;phpphpphp&#39;,88.8,&#39;new&#39;,&#39;Bejjing publisher&#39;);
    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 サイト (m.sbmmt.com) に注目してください。


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