-
子類中編寫跟父類方法名完全一致的方法可以完成對父類方法的重寫(overwrite)
對于不想被任何類繼承的類可以在class之前添加final關鍵字
對于不想被子類重寫的方法,可以在方法定義的前面添加final關鍵字
即使方法被重寫了,仍然可以用parent調用父類的該名稱的方法
查看全部 -
靜態屬性用于保存類的公有數據
靜態方法里面只能訪問靜態屬性
靜態成員不需要實例化對象就可以訪問
類內訪問當前類的靜態成員用self/static關鍵字,子類訪問父類的靜態成員用parent關鍵字
類外可以用類名訪問類的靜態成員(包括靜態屬性和靜態方法)
$this在類里面代指當前對象
查看全部 -
php的extends只能繼承一個類,即為php的單繼承原則
查看全部 -
為什么使用面向對象
查看全部 -
接口查看全部
-
abstract 關鍵字定義類,即為抽象類。
抽象類中使用abstract定義聲明一個方法,即為抽象方法,不需要具體實現。但在子類中需要實現。若方法沒有abstract定義,則需要具體實現。
查看全部 -
三大特性:封裝、繼承、多態。
多態:一個接口可以被多個類實現,也可以被多個接口繼承。并且接口里定義的方法,被實現的方式不一樣。則為多態。
查看全部 -
1、parent關鍵字可以調用父類中的方法。即使是被子類重寫了。
2、self關鍵字可以調用類自身的成員變量和方法,不管是靜態成員或者類常量(const CONST_VALUE=“”)
3、static關鍵字用于訪問類自身的靜態成員。
查看全部 -
final 關鍵字,讓方法不允許被重寫,讓類不允許被繼承。
查看全部 -
關鍵字:
? ? ? ?public:公共;protected:受保護的;private:私有的。? ? ? ?public:哪里有可以訪問的到。
? ? ? ?protected:只能在自身類中,或被繼承的子類中訪問。
? ? ? ?private:只能在自身類中訪問,假如在外部一定要訪問,則在類中申明一個方法返回屬性。
以上關鍵字聲明的屬性或方法,都是用$this->訪問。
查看全部 -
static關鍵字可用于聲明屬性或方法為靜態成員。
1、用static關鍵字,在類內部訪問,用self或static加::即可訪問;如子類要訪問,則使用parent加::訪問。訪問屬性時需注意要加上$符號。
2、靜態成員不需要實例化即可訪問,則類名::靜態成員名即可
3、靜態成員是用于保存類的共有數據。
查看全部 -
<?php?
class NbaPlayer{
public $name;
function __clone(){
$this->name='TBD';
}
}
$james=new NbaPlayer();
$james->name='james'."\n";
echo $james->name;
$james2=clone $james;
echo "Before set up jame2s's:".$james2->name."\n";
$james2->name='james2';
echo "james's:".$james->name."\n";
echo "james2's:".$james2->name."\n";
??>
__clone比較常用,用于對一個對象操作,但不想影響原有數據時。
查看全部 -
<?php?
class MagicTest{
//__tostring會在把對象轉換為string時自動調用
public function __tostring(){
return "This is the class MagicTest";
}
//__invoke會把在對象當做一個方法的時候自動調用
public function __invoke($x){
echo "_invoke called with parameter ".$x."\n";
}
//方法的重載
//這個方法的參數第一個就是調用的方法的名稱,第二個參數是方法調用的參數組成的數組
public function __call($name,$arguments){
echo "calling ".$name." with parament:".implode(",",$arguments)."\n";
}
//靜態方法的重載,需要將這個方法設定成static
public static function __callStatic($name,$arguments){
echo "calling static ".$name. " with parament:".implode(",",$arguments)."\n";
}
//屬性承載
public function __get($name){
return "getting? the property ".$name;
}
public function __set($name,$value){
echo "setting the property".$name." to value".$value."\n";
}
public function __isset($name){
echo "__isset invoked\n";
return false;
}
public function __unset($name){
echo "unsetting property ".$name."\n";
}
}
$obj=new MagicTest();
// echo $obj."\n";
// $obj(5);
// $obj->runTest("para1","para2");
// //靜態調用
// MagicTest::runTest("para1","para2");
echo $obj->ClassName."\n";
$obj->ClassName='magicClassX';
echo '$obj->ClassName is set?'.isset($obj->ClassName)."\n";
echo '$obj->ClassName is empty?'.empty($obj->ClassName)."\n";
unset($obj->ClassName);
??>
通過__get __set __isset __unset這四個魔術方法我們可以對沒有被的類進行操作
查看全部 -
<?php?
class MagicTest{
//__tostring會在把對象轉換為string時自動調用
public function __tostring(){
return "This is the class MagicTest";
}
//__invoke會把在對象當做一個方法的時候自動調用
public function __invoke($x){
echo "_invoke called with parameter ".$x."\n";
}
//方法的重載
//這個方法的參數第一個就是調用的方法的名稱,第二個參數是方法調用的參數組成的數組
public function __call($name,$arguments){
echo "calling ".$name." with parament:".implode(",",$arguments)."\n";
}
//靜態方法的重載,需要將這個方法設定成static
public static function __callStatic($name,$arguments){
echo "calling static ".$name. " with parament:".implode(",",$arguments)."\n";
}
public function __get($name){
return "getting? the property ".$name;
}
public function __set($name,$value){
echo "setting the property".$name." to value".$value."\n";
}
}
$obj=new MagicTest();
// echo $obj."\n";
// $obj(5);
// $obj->runTest("para1","para2");
// //靜態調用
// MagicTest::runTest("para1","para2");
echo $obj->ClassName."\n";
$obj->ClassName='magicClassX';
??>
?使用一個類庫時,可以使用__get來獲取某個方法
查看全部 -
<?php?
class MagicTest{
//__tostring會在把對象轉換為string時自動調用
public function __tostring(){
return "This is the class MagicTest";
}
//__invoke會把在對象當做一個方法的時候自動調用
public function __invoke($x){
echo "_invoke called with parameter ".$x."\n";
}
//方法的重載
//這個方法的參數第一個就是調用的方法的名稱,第二個參數是方法調用的參數組成的數組
public function __call($name,$arguments){
echo "calling ".$name." with parament:".implode(",",$arguments)."\n";
}
//靜態方法的重載,需要將這個方法設定成static
public static function __callStatic($name,$arguments){
echo "calling static ".$name. " with parament:".implode(",",$arguments)."\n";
}
}
$obj=new MagicTest();
// echo $obj."\n";
// $obj(5);
$obj->runTest("para1","para2");
//靜態調用
MagicTest::runTest("para1","para2");
??>
通過魔術變量實現同一個方法的正常調用和非正常調用
查看全部
舉報