>백엔드 개발 >PHP 튜토리얼 >PHP 객체지향 상속

PHP 객체지향 상속

不言
不言원래의
2018-06-06 10:10:311566검색

이 기사에서는 특정 참조 값이 있는 PHP의 객체 지향 상속을 주로 소개합니다. 이제 모든 사람과 공유합니다. 도움이 필요한 친구가 참조할 수 있습니다. —

공개 및 보호 속성과 메서드
.

키워드
상속을 사용하세요. 한 클래스가 다른 클래스를 통합하며 둘 이상을 상속할 수 없습니다.

관련 전문 용어

子类、父类、基类、超类、派生类
하위 클래스, 파생 클래스 ——> 기본 클래스에서 상속되는 클래스 상위 클래스, 기본 클래스 및 슈퍼 클래스는 상속되는 클래스를 참조합니다.

extends

<?php

class Father
{
    public $a = &#39;public&#39;;
    protected $b = &#39;protected&#39;;
    private $c = &#39;private&#39;;

    public function func1()
    {
        echo &#39;This is public function&#39;,&#39;<br/>&#39;;
    }

    protected function func2()
    {
        echo &#39;This is protected function&#39;,&#39;<br/>&#39;;
    }

    private function func3()
    {
        echo &#39;This is private function&#39;,&#39;<br/>&#39;;
    }
}

// 继承父类
class Child extends Father
{
    // 子类中调用继承来的方法
    public function test()
    {
        $this -> func1();
        $this -> func2();
        //$this -> func3();  私有方法不可以调用
    }
}

// 实例化子类
$son = new Child();


// 尝试调用属性
echo $son -> a,&#39;<br/>&#39;;
//echo $son->b;   不能直接输出b
//echo $son -> c; 继承都没继承,当然不能输出


// 尝试调用方法
//$son -> func1();
//$son -> func2();   不能在类外调用func2
//$son -> func3();   继承都没继承,当然不能调用

// 间接调用继承自父类的普通方法
$son -> test();

Rewrite

정의:

1) 상위 클래스의 메서드를 상속하고, 하위 클래스에 상위 클래스와 동일한 이름

을 가진 메서드
를 정의하고,

동일한 수의 매개변수

를 정의합니다. ;

2) 하위 클래스가 상위 클래스의 메서드를 재정의하는 경우 PHP는 상위 클래스의 재정의된 메서드를 호출하지 않습니다.

3) 상위 클래스의 메서드를 호출할지 여부는 하위 클래스에 따라 다릅니다. 4) 메서드 적용 범위를 구현할 때 액세스 수정자는 다를 수 있지만(,

) 하위 클래스

의 액세스 범위

는 상위 클래스의 액세스 범위

보다 크거나 같아야 합니다.

용도:

parent::    访问父类中被重写的属性和方法
Example
<?php

class Father
{
    public function shuo($num)
    {
        echo &#39;a a o o&#39;;
    }
}


class Son extends Father
{
    public function shuo($num)
    {
        // 调用父类中被重写的方法
        // parent::shuo($num);

        echo &#39;Hello World&#39;;
    }

    public function test($num)
    {
        parent::shuo($num);
    }
}

// 实例化子类
$son1 = new Son();
$son1 -> shuo(1);   // Hello World
$son1 -> test(1);   // a a o o
final 키워드

부모 클래스의 메서드가 final로 선언되면 하위 클래스는 해당 메서드를 재정의할 수 없습니다.

클래스가 final로 선언되면 상속할 수 없습니다.

Example

<?php

class Father
{
    final public function test()
    {
        echo &#39;hello&#39;;
    }
}

class Son extends Father
{
    public function test()
    {
        echo &#39;你好&#39;;
    }
}

// 实例化子类
$son1 = new Son();

$son1 -> test();  // 报错,函数不能被重写

관련 권장 사항:

php 객체 지향 오버로딩

php 객체 지향 캡슐화

위 내용은 PHP 객체지향 상속의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.