Vererbung: Wenn ein Objekt A Mitglieder eines anderen Objekts B verwendet, dann sagen wir, dass das A-Objekt das B-Objekt erbt!
Tipp: Das Konzept der Vererbung spiegelt sich in Objekten wider, und die Syntax spiegelt sich in den Klassen Klasse B Extens A { } wider!
<?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');
Die Bedeutung von Syntax ist die Wiederverwendung von Code in der objektorientierten Syntax!
instanceof, ob es sich um eine Instanz eines bestimmten Typs handelt (Instanceof hat das gleiche Konzept wie +-*/ und ist ein Operator)
<?php class AmParent{ } class AmChild extends AmParent{ } $amChild=new AmChild; var_dump( $amChild instanceof AmChild); var_dump( $amChild instanceof AmParent);
Operationsergebnis:
bool(true)
bool( true)
Umschreiben, überschreiben. Dies ist ein Phänomen, es findet nur eine Vererbung statt (verwenden oder vermeiden Sie diese Situation).
Wenn die Unterklasse und die übergeordnete Klasse Mitglieder (Eigenschaften, Methoden) mit demselben Namen haben, erhalten Sie beim Instanziieren des Unterklassenobjekts nur die Unterklasse Definierte Mitglieder, nennen Sie es eine Überschreibung!
Tipp:
Umschreiben ersetzt nicht!
Es gibt zwei verschiedene Say-Preise. Wir erhalten die aktuell angezeigten Eigenschaften oder Methoden über das Book-Klassenobjekt, was dem Prozess der Suche nach oben nach dem nächstgelegenen Standort ähnelt.
<?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');
Laufergebnis:
156,47 RMB
übergeordnet, übergeordnete Klasse
Nach dem Umschreiben wird der Code der übergeordneten Klasse nicht mehr ausgeführt!
Methoden mit demselben Namen wie die übergeordnete Klasse und die untergeordneten Klassen werden überschrieben, sodass einige Methoden definitiv überschrieben werden, z. B. Konstruktoren!
<?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);
Operationsergebnis:
object(Book)#1 (4) { [“author”]=> string(3) “new” [“publisher”]=> string(17) “Bejjing publisher” [“goods_name”]=> string(9) “phpphpphp” [“goods_price”]=> float(88.8) }
Der Konstruktor der übergeordneten Klasse ist aus Sicht der Unterklasse nur eine normale Methode.
Das Obige ist der Inhalt der objektorientierten PHP-Syntax-3-Vererbung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).