> 백엔드 개발 > PHP 튜토리얼 > PHP 객체 지향 구문 3 상속 확장

PHP 객체 지향 구문 3 상속 확장

黄舟
풀어 주다: 2023-03-04 11:52:02
원래의
1310명이 탐색했습니다.

상속: 객체 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)


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


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿