【php】面向對象(一)
1. 學習面向對象的目標:
a) 語法的學習:
b) 編程思想的學習:
i. 過程化:
ii. 面向對象:
2. 比較(有對象和沒對象的區別)
a) 沒對象:
i. 我餓了 自己做飯
ii. 我渴了 自己燒水
iii. 衣服臟了 自己去洗衣服
iv. 空虛寂寞了 自己去玩LOL
b) 有對象
i. 我餓了 對象給我去做飯
ii. 我渴了 對象給我去燒水
iii. 我衣服臟了 對象給我去洗衣服
iv. 我空虛寂寞了 對象和我一塊玩LOL遊戲
c) 面向對象的核心,就是讓對象幫我們去實現指定的功能
3. 對象:具有一定功能和特征的單個事物,稱之為對象
a) 對象是實際存在的一個事物
4. 類:具有相同功能和特征的對象的抽象,稱之為類
5. 類和對象的關系:
a) 類的實體化(實例化)就是一個對象
b) 對象的抽象就是類
6. 類比:
a) 馬良 馬良畫的畫 從畫中走出來的人
b) 程序員 類 對象
c) 設計師 設計的圖紙 由設計稿建造出來的建築
7. 如何來聲明一個類:(相當於正在設計圖紙)
a) 格式:class 類名{}
b) 命名:首字母大寫的駝峰命名法進行命名
c) 標識符命名規則:字母、數字、下劃線,首字母不能為數字,嚴格區分大小寫,且不能使用關鍵字
d) 聲明成員屬性:
i. 註意:
1. 必須給定成員修飾符(Public、Protected、Private)
2. 成員屬性的默認值(初始值)可以不給
3. 成員屬性賦初始值時
a) 不能使用變量賦值
b) 建議不要使用計算來給成員屬性賦值
c) 不能使用函數調用方式給成員屬性賦值
4. 變量的數據類型:
a) 四種標量:整型、浮點型、字符串型、布爾型
b) 兩種復合:對象、數組
c) 兩種特殊:資源、null空
5. 常量可以存放的數據類型:
a) 4中標量類型和null空型
e) 成員方法的聲明:
i. 註意
1. 成員方法就是一個函數,在類當中我們稱之為方法
2. 跟成員屬性的聲明方式類似,成員方法,也需要給定一個成員修飾符(public、protected、private)
3. 成員方法的參數是可有可無的
4. 成員方法的返回值和代碼體都是可有可無的!
5. 函數在我們不指定return的時候,或者說,給定return但是後面沒有值的情況下,返回的結果都是null
f) 類當中只能存在成員屬性和成員方法,之外的內容都會報錯!
g) 成員屬性和成員方法的位置不固定,但是建議將成員屬性寫在前面
8. 對象的實例化:
a) 格式:變量名 =new 類名()
Object => 變量的類型
(Meinv) => 類名
[1] => 在當前腳本當中所實例化對象的索引號
1 //聲明一個美女類(相當於設計的過程) 2 class Meinv{ 3 4 //特征 => 成員屬性 5 public $name; 6 public $sex; 7 public $age=18; 8 public $tall; 9 10 //功能 => 成員方法 11 public function eat(){ 12 echo ‘我正在吃東西!‘; 13 } 14 15 public function drink(){ 16 echo‘我正在喝東西‘; 17 } 18 19 public function talk($someone){ 20 echo ‘我正在和‘.$someone.‘說話!‘; 21 } 22 } 23 24 //實例化(實體化) 25 $lingling = new Meinv(); 26 27 //成員屬性的操作 28 $lingling->name = ‘玲玲‘; 29 $lingling->sex = ‘女‘; 30 $lingling->age = 20; 31 $lingling->tall = 160.00; 32 33 var_dump($lingling); 34 35 //結果 36 object(Meinv)[1] 37 public ‘name‘ => string ‘玲玲‘ (length=6) 38 public ‘sex‘ => string ‘女‘ (length=3) 39 public ‘age‘ => int 20 40 public ‘tall‘ => float 160
b) 註意:
i. 類名後面的小括號可有可無,但是我們建議加上
ii. 對象的實例化可以在類的聲明之前,也可以在類的聲明之後
iii. 成員訪問符: ->
1 //聲明一個手機類 2 3 class Phone{ 4 5 //成員屬性 6 public $brand; 7 public $size; 8 public $color; 9 10 //成員方法 11 public function call($someone){ 12 echo ‘我正在給‘.$someone.‘打電話<br/>‘; 13 } 14 15 public function sendMessage($someone){ 16 echo ‘我正在給‘.$someone.‘發短信<br/>‘; 17 } 18 19 } 20 21 //實例化類 22 $apple = new Phone(); 23 24 //初始化成員屬性信息 25 $apple->brand = ‘蘋果‘; 26 $apple->size = ‘4.7inch‘; 27 $apple->color = ‘紅色‘; 28 29 //進行成員屬性的操作 30 //成員屬性的添加 31 $apple->price = ‘5799元‘; 32 //成員屬性的刪除 33 // unset($apple->color); 34 //成員屬性的修改 35 $apple->size = ‘5.5inch‘; 36 //成員屬性的訪問 37 echo $apple->brand; //蘋果 38 echo $apple->size; //5.5inch 39 echo $apple->price; //5799元 40 41 //進行成員方法的操作 42 $apple->call(‘範冰冰‘); //我正在給範冰冰打電話 43 $apple->sendMessage(‘李冰冰‘); //我正在給李冰冰發短信
9. $this 特殊的變量
a) 名字特殊
b) 只能在類的內部當中的成員方法中使用
c) $this 代表了正在訪問當前方法的對象
10. 構造方法:
a) 本質:也是一個成員方法,是一個特殊的成員方法
b) 名字:__construct、和類名同名的方法都屬於構造方法,我們推薦使用__construct;
c) 執行場景:當我們實例化一個類時,會自動調用__construct方法
d) 作用:初始化對象
11. 析構方法:
a) 本質:也是一個成員方法,是一個特殊的成員方法
b) 名字:__destruct
c) 執行場景:當我們對象被銷毀的時候,自動執行
1 //聲明一個汽車類 2 class car{ 3 4 //成員屬性 5 public $brand; 6 public $type; 7 public $price; 8 9 //成員方法 10 public function __construct($brand,$type,$price){ 11 //給成員屬性賦值 12 $this->brand = $brand; 13 $this->type = $type; 14 $this->price = $price; 15 16 echo $this->brand.‘創建<br/>‘; 17 } 18 19 public function drive(){ 20 echo ‘我正在開車,麽麽噠!!‘; 21 } 22 23 public function carry($someone){ 24 echo ‘我正在載著‘.$someone.‘找女朋友!‘; 25 } 26 27 //析構方法,當我們的腳本執行完畢時會自動執行 28 public function __destruct(){ 29 echo $this->brand.‘銷毀<br/>‘; 30 } 31 32 } 33 34 //實例化一個奔馳車 35 $benz = new car(‘奔馳‘,‘越野‘,‘200w‘); 36 37 $baoma = new car(‘寶馬‘,‘敞篷‘,‘180w‘); 38 39 //結果 40 奔馳創建 41 寶馬創建 42 寶馬銷毀 43 奔馳銷毀
【php】面向對象(一)