PHP オブジェクト指向の継承

不言
不言オリジナル
2018-06-06 10:10:311607ブラウズ

この記事では、主に 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();

書き換え

定義:

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。