Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied zwischen öffentlich, geschützt und privat

Der Unterschied zwischen öffentlich, geschützt und privat

WBOY
WBOYOriginal
2016-08-08 09:23:411206Durchsuche

Abschließen durch className::functionNmae(), Instantiation, Parent, self

className::functionNmae() muss eine statische Methode sein (öffentlicher Modus)

parent::functionNmae() Die übergeordnete Klasse muss eine statische Methode sein (öffentlicher und geschützter Modus)

self::functionNmae() Die Klasse muss eine statische Methode sein Methode (Drei Modi)

Instanziierung: Nach der Instanziierung können Sie im öffentlichen Modus auf statische Methoden oder gewöhnliche Methoden zugreifen

Direkter Zugriff (über className: : functionNmae() und Instanziierung):

Fazit:

                                                          ) Zugriff über Nmae()
geschützt
|. Nicht zugänglich über Instanz $obj->functionName( ) mae() access
private
|. Nicht zugänglich über Instanz $obj->functionName()



2. Direkter Zugriff (self::functionNmae( ))

<?<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>
Fazit:

self::functionNmae(); muss eine statische Methode sein (alle drei Modi sind verfügbar)

3. Zugriff auf die übergeordnete Klasse über die Unterklasse (parent::functionNmae() und Instanziierung)

<?<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>
Fazit:

parent::functionNmae(); private ist nicht zugänglich

$obj ->functionNmae(); private ist nicht zugänglich


Das Obige hat die Unterschiede zwischen öffentlich, geschützt und privat vorgestellt, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

<?<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>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn