標籤:echo 區別 覆蓋 需要 final 通過 lin personal 不同
前 言
這是我來到部落格園大家庭所寫的第一篇個人部落格,以後我也將在這裡記錄自己所學的點點滴滴。深知還有5個月不到的時間就要面臨找工作的窘境,但我還是想堅持有時間了就來寫點東西。儘管在寫這段前言的時候,我感覺我可以在看點其他的知識,但我還是想堅持下去,堅信會有不一樣的收貨。在這裡引用今早讀的一篇文章的話來激勵一起走在IT路上你和我,至於為何需要一些激勵,也許以前你有有過,也許未來你會有這樣的迷茫:Where should I go? and why shuold I go here? 至少現在的自己不再是那麼迷茫。“局促不安只能使人無所作為,只要關注最基本的東西,其他東西都會隨之而來的。Just do it!”,與君共勉。
1.什麼是建構函式?
建構函式是對給定的類或對象進行初始化(執行個體化)時執行的方法,一般用_construct()來表示,當使用new操作符在記憶體中建立類的新對象(執行個體)時他就會被調用,建構函式無需引用,在new的時候它會自動被引用和執行。
來個例子:
<?php
class Person{
private $name;
private $age;
function _construct($name,$age){ //建構函式
this->name = $name;
this->age = $age;
}
function personal_info(){
echo "我的名字是$this->name,我今年$this->age歲。\n";
}
function _destruct(){ //解構函式
echo "我是來釋放資源滴!";
}
}
$p1 = new Person("小蝸牛",25);//建立Person類的一個對象p1
$p1->personol_info();//調用Person類的personal_info()方法
?>
2.什麼是解構函式?
在上面的例子中我們在Person類的最後定義了一個函數_destruct(),這就是解構函式,在指令碼執行完畢後,所有的對象都會自動調用解構函式,來清理資源。
當然還可以用unset()函數來消除對象,但一般都不會顯示調用unset()函數,該函數一般用於節省記憶體。
3.成員變數前的private和protected區別?
private用於定義私人的成員變數,通過private定義的類的成員變數,只能在本類的方法中可見;protected用於定義受保護的類,通過protected定義的類的成員變數,只能在本類或子類或父類的方法中可見。
4.類的繼承和重載
首先,我們來看一個例子:
<?php
class Person{
protected $name;
protected $age;
function _construct($name,$age){
$this->name = $name;
$this->age = $age;
}
function personal_info(){
echo "我的名字是$this->name,我今年$this->age歲。";
}
function _destruct(){
echo "我是來清理記憶體滴!";
}
}
class Man extends Person{ // extends 用於類繼承
protected $height;
function _construct($name,$age,$height){
parant::_construct($name,$age,$height);//父類的函數可以通過parent::結構在子類中調用
$this->height = height;
}
function personal_info(){
parent::personal_info();
echo "我的身高是$this->height。\n";
}
function _destruct(){
parent::_destruct();
}
}
$man1 = new Man("小蝸牛",25,180);
$man1->personal_info();
$p2 = new Person("老蝸牛",50);
$p2->personal_info();
?>
php中使用關鍵字extends繼承一個類,php不支援多繼承,即一個類只能有一個父類。
當從父類繼承的方法不能滿足子類的需求時,可以對繼承的類進行改寫,這個過程叫做覆蓋或者重載。php中函數重載與C++中不同,C++中意為函數具有相同函數名稱,但是參數類型不同。
當類中的方法標記為"final"時,該方法不能被重載。
final function personal_info(){
...//代碼
}
Php物件導向基礎(1)