public、protected、private的区别,protectedprivate
通过className::functionNmae()、实例化、parent、self得出结论
className::functionNmae() 需是静态方法(public模式)
parent::functionNmae() 父类需是静态方法(public、protected两种模式)
self::functionNmae() 该类需是静态方法(三种模式)
实例化:实例化后可访问public模式的静态方法或普通方法
一、直接访问(通过 className::functionNmae()和实例化):
结论:
| 可以 通过 className::functionNmae() 访问
public
| 可以 通过实例 $obj->functionName() 访问
| 不可 通过 className::functionNmae() 访问
protected
| 不可 通过实例 $obj->functionName() 访问
| 不可 通过 className::functionNmae() 访问
private
| 不可 通过实例 $obj->functionName() 访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | <?<span>php
</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>
A</span>::stc();<span>
<span>
A</span>::<span> $name </span>;<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> $a </span>->stc();<span>
<span>
</span>
|
Copier après la connexion
二、直接访问(self::functionNmae())
结论:
self::functionNmae();需是静态方法(三种模式都可)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <?<span>php
</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><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>
|
Copier après la connexion
三、通过子类访问父类(parent::functionNmae()和实例化)
结论:
parent::functionNmae(); private不可访问
$obj->functionNmae(); private不可访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <?<span>php
</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> 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> }
}
B</span>::<span>index();
</span><span>
</span>
|
Copier après la connexion
http://www.bkjia.com/PHPjc/1006439.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1006439.htmlTechArticlepublic、protected、private的区别,protectedprivate 通过className::functionNmae()、实例化、parent、self得出结论 className::functionNmae() 需是静态方法(public模...