visibility keyword: public, protected, private
建構子: 與 Java 不同, 不跟類別同名, 寫法與function 相同, 名稱為 public function __construct
另有 __destruct 於清除類別時呼叫
類別常數:
關鍵字 const , 沒有修飾子, 全大寫字母, 無 $ 標記, 宣告後唯讀
在class外使用時 類別名稱::常數名稱
在class內使用時 self::常數名稱
static:
只能是 public 並使用 :: 來存取值
function 的 overriding :
在 overriding 時調用父類別的同名函數時使用 parent::函數名(參數)
抽象類別 abstract 與介面 interface:
抽象類別關鍵字 abstract , 只能被繼承, 不能自己產生 instance, abstract function僅有名稱及參數定義, 無實作
當class內有一個 function 定義為abstract時, 該 class 必須定義為 abstract
interface 裡面的 function 全是抽象( 但省略 abstract 關鍵字 ), 且只能被實作( implements )
如果沒有完全實作 interface 裡面的 function , 則該 class 還是 abstract (不能被new)
final:
防止 function 或變數被 overriding 或繼承
複製:
$a = new MyClass();
$b = clone $a;
/*
$b 把 $a 複製了一份..即兩個不同的 MyClass 實體, 但為淺度複製, 其方式為呼叫該 class 內的 public function __clone()
因此可以自行定義該 function 進行操作
*/
__toString :
把物件實體作為唯一參數傳給 print 或 echo 時, 會呼叫該類別的 public function __toString()
可overriding 使輸出結果合乎要求
type hine:
在向 function 傳遞參數時, 若參數為物件, 可指定他必須為某類別(或其子類別)
function get_prod(MyClass $a){} //指定傳入的 $a 參數必須為 MyClass 的實體, 或其子類別
__autoload :(PHP5)
在 php 頁面中實作 function __autoload(), 將要 include或 require 的類別名稱作為參數傳入
並在 function 中對需要用到的類別作 include 或 require 呼叫
php 就會自動執行它
沒有留言:
張貼留言