標籤:
/*class Info
{
const p =10;//將某些常用的常量表示出來,出了類訪問不到
public static $class; //定義為靜態
public $code;
protected $name;
private $sex;
static function Test()//靜態方法
{
echo self::$class;//代表該類,調用自身類裡邊的靜態成員
echo "jtff";
}
function Say()
{
echo self::$class;//普通方法裡邊可以調用靜態成員
echo "hello";}
/*function __set($n,$y)
(
$this->$n = $y;
)*/
//2.繼承:
//概念:如果一個類有子類,他會繼承父類的一切東西,私人成員訪問不到
//定義子類的時候需要加關鍵字:extends
//特點:單繼承,一個兒子只能有一個父親,一個類只能有一個父類
//如果父類中有建構函式,子類在執行個體化時要按照父類的標準來做
//子類對父類方法的重寫,在子類中寫一個同樣的方法
//final: 用來修飾類,代表該類是一個最終類,無法被繼承
/*class Test extends Info
{
public $birthday;
function Run()
{
echo "run";
}
function Say()
{
parent::Say();//調用父類的say方法
echo "world<br>";
}
}
$t = new Test();
/*Info::$class = "0305";
$t->code = "p001";*/
/*$t->Say();
//$t->Run();
var_dump ($t);
echo Info::p;*/
//靜態成員
//普通成員是屬於對象的,不是屬於類的,調用的時候用對象調用
//什麼叫靜態成員:屬於類的不是屬於每個對象的,
//定義靜態成員由static關鍵字修飾
//靜態方法裡邊無法調用普通成員,可以調用靜態成員,使用關鍵字:self
//self代表該類,$this代表該對象
/*Info::$class = "0305";//訪問靜態成員用::
echo Info::$class;
Info::Test();*/
class Ren
{
public $name;
public $sex;
function Say()
{
echo "hello";
}
function __tostring() //輸出類裡面的一些描述
{
return "這個類包含變數name和sex";}
function __clone()//對象複製的時候自動執行
{
$this->name = "李四";//$this指複製出來的新對象
}
}
class China extends Ren
{
function Say()
{
echo "你好";
}
}
//多態
//當父類引用指向子類執行個體的時候,由於子類對父類函數進行了重寫,導致了我們在使用該引用去調用相應方法表現的不同
//發生條件:1.必須要繼承
//2.父類引用要指向子類的執行個體~~~~~~~~~~~~~
//2.子類必須對父類的方法進行重寫
//$r = new Ren();//代表Rene的引用
//$r1 = new China();//代表China的引用
//函數重載
//條件:1.函數名必須相同;2.函數裡面參數的個數不同,如果個數相同,類型不同也可形成重載
//__tostring()方法
//對象的複製
$r = new Ren();
$r->name = "張三";
$r1 = clone $r;//clone複製對象
var_dump($r1);
繼承和多態