通過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() 訪問
<?php
/**
*
* @authors HG (hg0728@qq.com)
* @date 2015-05-26 17:12:02
* @version 1.0
*/
header("Content-type:text/html;charset=utf-8");
class A {
static $name='這是類A的靜態變量';
static public function stc_pc(){
echo '這是類A的公共靜態方法<br />';
}
static function stc(){
echo '這是類A的靜態方法<br />';
}
static protected function stc_pd(){
echo '這是類A受保護的靜態方法<br />';
}
static private function stc_pe(){
echo '這是類A私有的靜態方法<br />';
}
}
A::stc_pc();//可訪問
A::stc();//可訪問
A::$name;//不報錯
//A::stc_pd();//不可訪問
//A::stc_pe();//不可訪問
echo '<br><br>通過實例化訪問<br><br>';
$a = new A();
$a->stc_pc();//可訪問
$a->stc();//可訪問
//$a->$name;//報錯
//$a->stc_pd();//不可訪問
//$a->stc_pe();//不可訪問
/********************
| 可以 通過 className::functionNmae() 訪問
public |
| 可以 通過實例 $obj->functionName() 訪問
| 不可 通過 className::functionNmae() 訪問
protected |
| 不可 通過實例 $obj->functionName() 訪問
| 不可 通過 className::functionNmae() 訪問
private |
| 不可 通過實例 $obj->functionName() 訪問
********************/
二、直接訪問(self::functionNmae())
結論:
self::functionNmae();需是靜態方法(三種模式都可)
<?php
/**
*
* @authors HG (hg0728@qq.com)
* @date 2015-05-26 17:18:50
* @version 1.0
*/
header("Content-type:text/html;charset=utf-8");
class C {
static $name = "靜態變量";
static public function stc_pc(){
echo '靜態公共方法<br>';
self::stc_pd();
self::stc_pe();
self::stc();
//self::func();//報錯但有結果
}
static protected function stc_pd(){
echo '靜態受保護方法<br>';
}
static private function stc_pe(){
echo '靜態受保護方法<br>';
}
static function stc(){
echo '靜態普通方法<br>';
}
function func(){
echo '普通方法<br>';
}
}
C::stc_pc();
/******
self::functionNmae();需是靜態方法(三種模式都可)
******/
三、通過子類訪問父類(parent::functionNmae()和實例化)
結論:
parent::functionNmae(); private不可訪問
$obj->functionNmae(); private不可訪問
<?php
/**
*
* @authors HG (hg0728@qq.com)
* @date 2015-05-26 17:18:50
* @version 1.0
*/
header("Content-type:text/html;charset=utf-8");
include '/class_a.php';
class B extends A{
static public function index(){
parent::stc_pc();
parent::stc();
parent::stc_pd();
parent::$name;//不報錯
//parent::stc_pe();//不可訪問
echo '<br><br>通過實例化訪問<br><br>';
$a = new A();
$a->stc_pc();
$a->stc();
$a->stc_pd();
$a->$name;//報錯
//$a->stc_pe();//不可
}
}
B::index();
/******
在子類中通過:
parent::functionNmae(); private不可訪問
$obj->functionNmae(); private不可訪問
******/