《PHP學習:PHP面向對象精要總結》要點:
本文介紹了PHP學習:PHP面向對象精要總結,希望對您有用。如果有疑問,可以聯系我們。
PHP實戰本文實例匯總了PHP面向對象程序設計的精要.分享給大家供大家參考.具體分析如下:
PHP實戰1 使用extends實現繼承以及重載、魔術辦法的含義
PHP實戰class B extends A
聲明的時候B里可以沒有A里的辦法
調用的時候:
PHP實戰$b=new B();
$b->A里的辦法();
$b->A里的屬性=1;
$b->B里的辦法();
$b->B里的辦法();
PHP實戰如果$a=new A();
可以
$a->A里的方法();
$a->A里的屬性=1;
不可以
$a->B里的方法();
$a->B里的方法();
?
重載:B繼承A ,B里實現和A同名的方法屬性.
PHP中的"重載"與其它絕大多數面向對象語言不同.傳統的"重載"是用于提供多個同名的 類方法,但各方法的參數類型和個數不同.
?
魔術方法:PHP把所有以__(兩個下劃線)開頭的類方法當成魔術方法.所以你定義自己的類方法時,不要以 __為前綴.
?
2 繼承用private和protected拜訪修飾符可見性
PHP實戰屬性方法private不可以被繼承
屬性方法protected類外部不可見,可以被繼承
屬性方法public 所定義的類成員可以在任何地方被拜訪
PHP實戰3 php中雙冒號::的應用
PHP實戰php類代碼中常看到"::"的操作符,這個是作用域限定操作符,是用一個雙冒號"::"表示,它用來置頂類中不同作用域的級別.左邊是作用域右邊是拜訪作用域的成員.
在php中定義的作用域有self和parent兩種(在php6中提供了static作用域).
?
范圍解析操作符(也可稱作 Paamayim Nekudotayim)或者更簡單地說是一對冒號,可以用于拜訪靜態成員、方法和常量,還可以用于子類覆蓋父類中的成員和方法.
PHP實戰echo MyClass::CONST_VALUE;
class OtherClass extends MyClass
{
??? public static $my_static = 'static var';
PHP實戰??? public static function doubleColon() {
??????? echo parent::CONST_VALUE . "\n";
??????? echo self::$my_static . "\n";
??? }
}
PHP實戰OtherClass::doubleColon();
//子類覆蓋父類
class MyClass
{
??? protected function myFunc() {
??????? echo "MyClass::myFunc()\n";
??? }
}
PHP實戰class OtherClass extends MyClass
{
??? // 覆蓋父類中的辦法
??? public function myFunc()
??? {
??????? // 但仍然可以調用已被覆蓋的辦法
??????? parent::myFunc();
??????? echo "OtherClass::myFunc()\n";
??? }
}
PHP實戰$class = new OtherClass();
$class->myFunc();
PHP實戰4 php中this和self以及parent的作用
PHP實戰this:就是指向當前對象實例的指針,不指向任何其他對象或類.
self:表示當前類的作用域,與this不同的是它不表示類的某個特定實例,在類之外的代碼中不能使用self,而且它不能識別自己在繼承中層次的位置.也就是說,當在擴展類中使用self時,它調用的不是父類的辦法,而是擴展類的重載的辦法.self是指向類本身,也就是self是不指向任何已經實例化的對象,一般self使用來指向類中的靜態變量.
PHP實戰//構造函數
function __construct()
{
???? $this->lastCount = ++self:$firstCount; //使用self來調用靜態變量,使用self調用必須使用::(域運算符號)
}
PHP實戰5 構造函數與析構函數
PHP實戰具有構造函數的類會在每次創建對象時先調用此方法,所以非常適合在使用對象之前做一些初始化工作.
function __construct() {}
如果子類中定義了構造函數則不會黑暗調用其父類的構造函數.要執行父類的構造函數,需要在子類的構造函數中調用 parent::__construct().
PHP 5 引入了析構函數的概念,這類似于其它面向對象的語言,如 C++.析構函數會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行.
function __destruct() {}
?
6 final 關鍵字
PHP實戰PHP 5 新增了一個 final 關鍵字.如果父類中的辦法被聲明為final,則子類無法覆蓋該辦法; 如果一個類被聲明為final,則不能被繼承.
?
7 繼承和構造函數
父類 | 子類 | 結果 |
有構造函數 | 無構造函數 | 父構造 |
有構造函數 | 有構造函數 | 子構造 |
PHP實戰可以通過interface來定義一個接口,就像定義一個標準的類一樣.
注意:
1)但其中定義所有的辦法都是空的;
2)接口中定義的所有辦法都必須是public,這是接口的特性;
3)實現多個接口時,接口中的辦法不能有重名;
4)接口也可以繼承,通過使用extends操作符;
5)接口中也可以定義常量.接口常量和類常量的使用完全相同. 它們都是定值,不能被子類或子接口修改.
PHP實戰9 屬性
PHP實戰類的變量成員叫做“屬性”,屬性聲明是由關鍵字public或者protected或者private開頭,然后跟一個變量來組成. 屬性中的變量可以初始化,但是初始化的值必須是常數,這里的常數是指php腳本在編譯階段時就為常數,而不是在編譯階段之后在運行階段運算出的常數.
在PHP5 中,預定義了兩個函數“__get()”和“__set()”來獲
取和賦值其屬性,以及檢查屬性的“__isset()”和刪除屬性的辦法“__unset()”.
簡單的說一個是取值,一個是賦值.,“__set()”和“__get()”這兩個辦法,這兩個辦法不是默認存在的,而是我們手工添加到類里面去的,像構造辦法(__construct())一樣, 類里面添加了才會存在,可以按下面的方式來添加這兩個辦法,當然也可以按個人的風格來添加://__get()辦法用來獲取私有屬性
PHP實戰10 克隆
PHP實戰對象復制可以通過clone關鍵字來完成(如果對象中存在__clone()辦法,會先被調用).對象中的 __clone()辦法不能直接調用.
當對象被復制后,PHP5會對對象的所有屬性執行一個“淺復制”(shallow copy).所有的屬性中的引用 仍然不變,指向原來的變量.如果定義了__clone()辦法,則新創建的對象(復制生成的對象)中的__clone()辦法會被調用, 可用于修改屬性的值(如果有必要的話).
PHP實戰希望本文所述對大家的php面向對象程序設計有所贊助.
《PHP學習:PHP面向對象精要總結》是否對您有啟發,歡迎查看更多與《PHP學習:PHP面向對象精要總結》相關教程,學精學透。維易PHP學院為您提供精彩教程。