定義乙個類
當你宣告乙個類,你需要列出物件應有的所有變數和所有函式—被稱為屬性和方法. 3.1.1中顯示了乙個類的構成. 注意在大括號({})內你只能宣告變數或者函式. 3.1.2中顯示了如何在乙個類中定義三個屬性和兩個方法.
1.class name extends another class
2.name = $name;
$this->password = $password;
$this->lastlogin = time();
$this->accesses++;
} // 獲取最後訪問的時間
function getlastlogin()
} //建立乙個物件的例項
$user = new user("leon", "sdf123");
//獲取最後訪問的時間
print($user->getlastlogin() ."
");
//列印使用者名稱
print("$user->name
");
?>
當你宣告屬性,你不需要指明資料型別. 變數可能是整型,字串或者是另乙個物件,這取決於實際情況.在宣告屬性時增加注釋是乙個好主意,標記上屬性的含義和資料型別.
當你宣告乙個方法,你所做的和在類外部定義乙個函式是一樣的. 方法和屬性都有各自的命名空間. 這意味著你可以安全地建立乙個與類外部函式同名的方法,兩者不會衝突. 例如,乙個類中可以定義乙個名為date()的方法. 但是你不能將乙個方法命名為php的關鍵字,如for或者while.
類方法可能包含php中所謂的type hint. type hint 是另乙個傳遞引數給方法的類的名字. 如果你的指令碼呼叫方法並傳遞乙個不是類的例項的變數,php將產生乙個」致命(fatal)錯誤」 . 你可能沒有給其它型別給出type hint,就像整型,字串,或者布林值. 在書寫的時候, type hint是否應當包含陣列型別仍存在爭議.
type hint是測試函式引數或者運算子的例項的資料型別的捷徑. 你可能總是返回這個方法. 確認你強制讓乙個引數必須是哪種資料型別,如整型. 3.2.1 確保編譯類只產生widget的例項.
元件 class widget
//裝配器
class assembler
} //建立乙個元件物件
$thing = new widget;
$thing->name = gadget;
//裝配元件
assembler::make($thing);
?>
除了傳遞引數的變數外,方法含有乙個特殊的變數. 它代表類的個別例項. 你應當用這個來指向物件的屬性和其它方法.一些物件導向的語言假設乙個不合格的變數提交給本地屬性,但在php中方法的任何變數只是在方法的一定範圍內. 注意在user類的建構函式中這個變數的使用(3.1.2).
php在屬性和方法宣告前定義乙個訪問限定語,如public,private和protected. 另外,你可以用」static」來標記乙個成員. 你也可以在類中宣告常量. 本章稍後會有不同訪問方式的相關討論.
你可以在一行中列出相同訪問方式的幾個屬性,用逗號來分隔它們. 在3.1.2中,user類有兩個private屬性--$password和$lastlogin.
定義乙個CPU類
定義乙個cpu類,包含等級 rank 頻率 frequency 電壓 voltage 等屬性,有兩個共有成員函式run stop。其中,rank為列舉型別定義為enum cpu ranl,frequency為單位是mhz的整數,voltage為浮點型的電壓值。觀察建構函式和析構函式的呼叫順序。inc...
定義乙個圓類 Circle ,
定義乙個圓類 circle 其所在的包為bzu.info.software 定義乙個圓柱類cylinder,其所在的包為bzu.info.com 定義乙個主類a,其所在的包也為bzu.info.com,在a中生成乙個cylinder物件,並輸出其體積。編譯並執行該類。試著改變求體積方法的訪問許可權,...
定義乙個圓類 Circle
課堂練習6 定義乙個圓類 circle 其所在的包為bzu.info.software 定義乙個圓柱類cylinder,其所在的包為bzu.info.com 定義乙個主類a,其所在的包也為bzu.info.com,在a中生成乙個cylinder物件,並輸出其體積。編譯並執行該類。試著改變求體積方法的...