• 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继承:

    私有成员可以被继承。

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

  • 相关阅读:
    第一章 jQuery基础方法回顾
    php无法执行python
    echarts
    logstash配置
    storm结合kafka
    spark中读取elasticsearch数据
    hadoop中读取protobuf数据
    spark1.3.1配置模板
    hadoop2.6.0配置模板
    使用jnetpcap捕获数据包进行流量检测
  • 原文地址:https://www.cnblogs.com/huodaihao/p/7072372.html
Copyright © 2020-2023  润新知