상속: 객체 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)
다시 작성하고 재정의합니다. 이는 현상입니다. 상속만 발생합니다(이 상황을 이용하거나 피하세요)
하위 클래스와 상위 클래스에 동일한 이름의 멤버(속성, 메서드)가 있는 경우 하위 클래스 개체를 인스턴스화할 때 서브클래스 정의된 멤버의 정보를 재정의라고 부릅니다.
tip:
다시 쓰는 것은 대체하는 것이 아닙니다!
두 가지 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 중국어 홈페이지(www.php.cn)를 참고해주세요!