zoukankan      html  css  js  c++  java
  • php类的访问修饰符

    Public, protected, private

    用来描述:

    成员,在源代码中的哪些位置可以访问 。

    Public:公共的:类内,类外,继承链类内

    Protected: 类内,继承链类内。

    Private:本类内。

    一:Private:本类内。

    <?php
    class H {
    // public function HgetP () {
    //echo $this->p;
    // echo self::$sp;
    // }
    public static function HgetP () {
    // echo $this->p;
    echo self::$sp;
    }
    }
    class Z extends H {
    //protected $p = 'value';
    private $p = 'value'; //$p是私有的,只能在本类内部调用
    public static $sp = 'static-value';
    // public function ZgetP () {
    // echo self::$sp;
    // }
    public static function ZgetP () {
    // echo $this->p;
    echo self::$sp;
    }
    }
    class K extends Z {
    public function KgetP () {
    echo $this->p;
    // echo self::$sp;
    }
    //public static function KgetP () {
    //echo $this->p;
    //echo self::$sp;
    //}
    }
    //echo H::HgetP();
    //echo Z::ZgetP();
    //echo K::KgetP();
    $o = new K;
    $o->KgetP();//输出:Notice: Undefined property: K::$p
    echo "<hr/>";
    var_dump($o);//输出:object(K)#1 (1) { ["p":"Z":private]=> string(5) "value" }
    $o->ZgetP(); //输出: static-value

    二 Protected: 类内,继承链类内。(在类的继承的体系内都可以调用)

    <?php
    class H {
    // public function HgetP () {
    //echo $this->p;
    // echo self::$sp;
    // }
    public static function HgetP () {
    // echo $this->p;
    echo self::$sp;
    }
    }
    class Z extends H {
    protected $p = 'value'; //$p是受保护的,在本类,本类的继承体系内部调用。
    //private $p = 'value'; //$p是私有的,只能在本类内部调用
    public static $sp = 'static-value';
    // public function ZgetP () {
    // echo self::$sp;
    // }
    public static function ZgetP () {
    // echo $this->p;
    echo self::$sp;
    }
    }
    class K extends Z {
    public function KgetP () {
    echo $this->p;
    // echo self::$sp;
    }
    //public static function KgetP () {
    //echo $this->p;
    //echo self::$sp;
    //}
    }
    //echo H::HgetP();//如果是静态成员,则父类不能访问子类定义的静态成员。
    //echo Z::ZgetP();
    //echo K::KgetP();
    $o = new K;
    $o->KgetP();//输出:value
    echo "<hr/>";
    var_dump($o);//输出:object(K)#1 (1) { ["p":"Z":private]=> string(5) "value" }
    $o->ZgetP(); //输出: static-value

    php继承:

    私有成员可以被继承。

    如果是静态成员,则父类不能访问子类定义的静态成员。

  • 相关阅读:
    对我影响最大的三位导师
    global与nonlocal
    random模块
    time模块
    datetime模块
    sys模块
    os模块
    collection模块
    hashlib模块
    pickle模块
  • 原文地址:https://www.cnblogs.com/huodaihao/p/7072372.html
Copyright © 2011-2022 走看看