Home  >  Article  >  Backend Development  >  The difference between public, protected and private, protectedprivate_PHP tutorial

The difference between public, protected and private, protectedprivate_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 09:53:041044browse

The difference between public, protected and private, protectedprivate

Draw the conclusion through className::functionNmae(), instantiation, parent, self

className::functionNmae() needs to be a static method (public mode)

parent::functionNmae() The parent class must be a static method (public and protected modes)

self::functionNmae() This class must be a static method (three modes)

Instantiation: After instantiation, you can access static methods or ordinary methods in public mode

1. Direct access (through className::functionNmae() and instantiation):

Conclusion:

                                                                                                               Nmae() access
protected
| Not accessible through instance $obj->functionName() | Not accessible through className::functionNmae()
private | Not accessible through className::functionNmae() Example$obj-> ;functionName() access


2. Direct access (self::functionNmae())

Conclusion:

self::functionNmae(); needs to be a static method (all three modes are available)

<?<span>php
</span><span>/*</span><span>*
 * 
 * @authors HG (hg0728@qq.com)
 * @date    2015-05-26 17:12:02
 * @version 1.0
 </span><span>*/</span>
<span>header</span>("Content-type:text/html;charset=utf-8"<span>);
</span><span>class</span><span> A {
    </span><span>static</span> <span>$name</span>='这是类A的静态变量'<span>;

    </span><span>static</span> <span>public</span> <span>function</span><span> stc_pc(){
        </span><span>echo</span> '这是类A的公共静态方法<br />'<span>;
    }
    </span><span>static</span> <span>function</span><span> stc(){
        </span><span>echo</span> '这是类A的静态方法<br />'<span>;
    }
    </span><span>static</span> <span>protected</span> <span>function</span><span> stc_pd(){
        </span><span>echo</span> '这是类A受保护的静态方法<br />'<span>;
    }
    </span><span>static</span> <span>private</span> <span>function</span><span> stc_pe(){
        </span><span>echo</span> '这是类A私有的静态方法<br />'<span>;
    }
}


A</span>::stc_pc();<span>//</span><span>可访问</span>
<span>
A</span>::stc();<span>//</span><span>可访问</span>
<span>
A</span>::<span>$name</span>;<span>//</span><span>不报错

//A::stc_pd();//不可访问

//A::stc_pe();//不可访问</span>


<span>echo</span> '<br><br>通过实例化访问<br><br>'<span>;


</span><span>$a</span> = <span>new</span><span> A();

</span><span>$a</span>->stc_pc();<span>//</span><span>可访问</span>

<span>$a</span>->stc();<span>//</span><span>可访问

//$a->$name;//报错

//$a->stc_pd();//不可访问

//$a->stc_pe();//不可访问</span>





<span>/*</span><span>*******************
          | 可以 通过 className::functionNmae() 访问
public    | 
          | 可以 通过实例 $obj->functionName() 访问        

          | 不可 通过 className::functionNmae() 访问
protected | 
          | 不可 通过实例 $obj->functionName() 访问    

          | 不可 通过 className::functionNmae() 访问
private   | 
          | 不可 通过实例 $obj->functionName() 访问    
*******************</span><span>*/</span>

3. Access parent class through subclass (parent::functionNmae() and instantiation)

Conclusion:

<?<span>php
</span><span>/*</span><span>*
 * 
 * @authors HG (hg0728@qq.com)
 * @date    2015-05-26 17:18:50
 * @version 1.0
 </span><span>*/</span>
<span>header</span>("Content-type:text/html;charset=utf-8"<span>);

</span><span>class</span><span> C {
    </span><span>static</span> <span>$name</span> = "静态变量"<span>;  
    </span><span>static</span> <span>public</span> <span>function</span><span> stc_pc(){        
        </span><span>echo</span> '静态公共方法<br>'<span>;
        self</span>::<span>stc_pd();
        self</span>::<span>stc_pe();
        self</span>::<span>stc();
        </span><span>//</span><span>self::func();//报错但有结果</span>
<span>        
    }

    </span><span>static</span> <span>protected</span> <span>function</span><span> stc_pd(){
        </span><span>echo</span> '静态受保护方法<br>'<span>;
    }
    </span><span>static</span> <span>private</span> <span>function</span><span> stc_pe(){        
        </span><span>echo</span> '静态受保护方法<br>'<span>;
    }

    </span><span>static</span> <span>function</span><span> stc(){        
        </span><span>echo</span> '静态普通方法<br>'<span>;
    }
    </span><span>function</span><span> func(){        
        </span><span>echo</span> '普通方法<br>'<span>;
    }
    
}


C</span>::<span>stc_pc();


</span><span>/*</span><span>*****

self::functionNmae();需是静态方法(三种模式都可)

*****</span><span>*/</span>
parent::functionNmae(); private is not accessible

$obj->functionNmae(); private is not accessible


http://www.bkjia.com/PHPjc/1006439.html
<?<span>php
</span><span>/*</span><span>*
 * 
 * @authors HG (hg0728@qq.com)
 * @date    2015-05-26 17:18:50
 * @version 1.0
 </span><span>*/</span>
<span>header</span>("Content-type:text/html;charset=utf-8"<span>);
</span><span>include</span> '/class_a.php'<span>;

</span><span>class</span> B <span>extends</span><span> A{
    
    </span><span>static</span> <span>public</span> <span>function</span><span> index(){        
        parent</span>::<span>stc_pc();
        parent</span>::<span>stc();
        parent</span>::<span>stc_pd();
        parent</span>::<span>$name</span>;<span>//</span><span>不报错
        //parent::stc_pe();//不可访问</span>

        <span>echo</span> '<br><br>通过实例化访问<br><br>'<span>;

        </span><span>$a</span> = <span>new</span><span> A();
        </span><span>$a</span>-><span>stc_pc();
        </span><span>$a</span>-><span>stc();
        </span><span>$a</span>-><span>stc_pd();
        </span><span>$a</span>-><span>$name</span>;<span>//</span><span>报错
        //$a->stc_pe();//不可</span>
<span>    }
    
}


B</span>::<span>index();

</span><span>/*</span><span>*****

在子类中通过:
parent::functionNmae(); private不可访问
$obj->functionNmae(); private不可访问

*****</span><span>*/</span>

www.bkjia.com

true

http: //www.bkjia.com/PHPjc/1006439.htmlTechArticleThe difference between public, protected and private, protectedprivate is obtained through className::functionNmae(), instantiation, parent, self Conclusion className::functionNmae() needs to be a static method (public module...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn