首頁 >後端開發 >php教程 >php物件導向之繼承

php物件導向之繼承

不言
不言原創
2018-06-06 10:10:311579瀏覽

這篇文章主要介紹了關於php物件導向之繼承,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

繼承

#定義

子類別繼承父類別所有的-公有(public)  和  受保護(protected)屬性和方法

使用關鍵字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();

重寫

定義:

1)繼承父類別的方法,子類別中定義與父類別同名的方法,且參數個數相同

2)當子類別重寫父類別中的方法時,php不會呼叫父類別中被重寫的方法;

3)是否呼叫父類別的方法,取決於子類別。

4)在實施方法覆蓋的時候,存取修飾符可以是不一樣的但是子類別的存取範圍必須大於等於父類的訪問範圍

使用:

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

範例

<?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,則不能被繼承。

範例

<?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