ホームページ > バックエンド開発 > PHPチュートリアル > 息子は父親の事業を継承し、phpは私有財産を継承します

息子は父親の事業を継承し、phpは私有財産を継承します

autoload
リリース: 2023-04-09 19:12:01
オリジナル
2844 人が閲覧しました

定義: 制限付き継承 とは、サブクラス親クラスのメンバーを継承する場合、すべてを継承するのではなく、親クラスの一部を継承して使用することを意味します。一般的に理解されているのは、前社長が退任する際、社内の一部の事項を現社長に引き継ぐ予定だったということであり、引き継ぎに係る書類や業務内容は書面に記録され、いつでも見直すことができるが、引き継ぐ方法がない場合、これは前 CEO から現在の CEO に限定的に継承されるものです。

1. 継承内容: PHP における継承とは、サブクラスがすべての public メンバー protected メンバー および を継承することを意味します。プライベート属性 は親クラスのプライベート メソッドを継承できません。

<?php
    class A{
      
        public $name=&#39;张三&#39;;
        protected $sex=&#39;man&#39;;
        private  $age=&#39;25&#39;;

        public function getName(){
           echo $this->name."<br>";
        }
        protected function getSex(){
           echo $this->sex."<br>";
        }
        private function getAge(){
          echo $this->age."<br>";
        }

    }
    class B extends A{
        
        public function getA(){
           $this->getName();
           $this->getSex();
           $this->getAge();//父类私有方法无法继承

        }
    }

    $a=new B();
    var_dump($a);
  /*object(B)#1 (3) { 
                          ["name"]=> string(6) "张三" 
                          ["sex":protected]=> string(3) "man" 
                          ["age":"A":private]=> string(2) "25" }
  */
?>
ログイン後にコピー

2.保護された継承 protected

protected キーワードの生成は純粋に継承のためです。サブクラス内ではサブクラスにアクセスできますが、外部から直接アクセスすることはできません。

<?php
    class A{
       public $name=&#39;张三&#39;;
        protected $sex=&#39;man&#39;;
        private  $age=&#39;25&#39;;

        public function getName(){
           echo $this->name."<br>";
        }
        protected function getSex(){
           echo $this->sex."<br>";
        }
        private function getAge(){
          echo $this->age."<br>";
        }

    }
    class B extends A{
        public function getA(){
           $this->getName();
           $this->getSex();
      }
    }
    $a=new B();
    var_dump($a);
    echo "<br>";
    
   //$a->getSex();    //: Call to protected method A::getSex() from context  不能在外部访问
  
?>
ログイン後にコピー

ヒント: 親クラスのプライベート メンバーにアクセスする: サブクラスが親クラスのプライベート メンバーにアクセスしたい場合、親クラスがサブクラスにアクセスするためのパブリック メソッドまたはプロテクト メソッドを提供していることが前提となります (通常はそうではありません)。推奨、それ以外の場合はプライベートの意味が失われます)。

3. 静的メンバー (クラス定数)

も継承ルールに従います (PHP の継承は本質的にオブジェクトです) が、アクセス方法はクラスによって行われます。

<?php
class Fu{
    const NAME = &#39;人&#39;;
    public static $count = 0;
    protected static $type = array(&#39;黑&#39;,&#39;黄&#39;,&#39;白&#39;);
    
    public static function getCount(){
        echo self::NAME;
        echo self::$count;
    }
    protected static function getType(){
        print_r(self::$type);
    }
}

class Zi extends Fu{
    //依然需要子类中访问受保护成员
    public static function getFu(){
        Fu::getType();
    }
}

echo Zi::$count;	//允许直接访问
Zi::getCount();	//访问父类静态方法
Zi::getFu();	//利用子类公有方法访问父类受保护成员
?>
ログイン後にコピー

4.構築メソッド破壊メソッドはサブクラスにも継承できます。サブクラス オブジェクトをインスタンス化するときに対応する親クラスのコンストラクター メソッド のパラメーター。

<?php
//父类
class Fu{
    private $money;
    public function __construct($money){
        $this->money = $money;
    }
    
    public function __destruct(){
        echo &#39;die&#39;;
    }
}

//子类继承
class Zi extends Fu{}

//子类实例化:自身是空类,没有指定构造方法
//$m = new Zi();					//错误:缺少参数,因为会自动调用父类构造方法
$m = new Zi(100);					//正确
?>
ログイン後にコピー
推奨:

php チュートリアル

以上が息子は父親の事業を継承し、phpは私有財産を継承しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート