国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php面向對象開發學習筆記

2024-09-04 11:43:34
字體:
來源:轉載
供稿:網友

面向對象程序設計(英語:Object-oriented programming,縮寫:OOP),指一種程序設計范型,同時也是一種程序開發的方法。對象指的是類的集合。它將對象作為程序的基本單元,將程序和數據封裝其中,以提高軟件的重用性、靈活性和擴展性

1.在定義對象方法的時候,雖然不用在前面寫public默認為公共方法,但是建議寫上。

php面向對象第一天

1.什么是面向對象?

要素:抽象性,封裝性,共享性,強調對象結構而不是程序結構。

什么是類?

可以理解成一個功能集合菜單,我們通過類來實現生成我們的方法。

例:一臺電腦

類:顯示器/鍵盤/主機...的集合(封裝)。

對象:顯示器/鍵盤/主機……其中之一,擁有自己的獨有功能。

屬性:電腦。

方法:提高功能,看電影,玩游戲,編程,上網……。

2.使用class創建一個類

有了類才能有方法。

格式:

  1. class 方法名 { 
  2. ...... 

成員屬性:自定義變量(一個名而已)。

成員方法:自定義功能。

3.類的成員屬性和成員方法

注意:使用public來定義成員屬性不要用var。

實例代碼如下:

  1. class MyPc { //聲明一個類,定義一個方法MyPc。 
  2. public $name//成員屬性。 
  3. var $price//成員屬性 
  4. function vod() { //成員方法,實現返回字符串功能。 
  5. return "test"

4.使用new函數對象實例化

格式:new 對象名(參數)

實例1代碼如下:

  1. class MyPc { //聲明一個類,定義一個方法MyPc。 
  2. public $name//成員屬性。 
  3. var $price//成員屬性 
  4. function vod() { //成員方法,實現返回字符串功能。 
  5. return "test"
  6. $pc1 = new Mypc(); //實例化 
  7. $pc1 -> name; 

實例2代碼如下:

  1. <?php 
  2. class MyPc { 
  3.  var $key
  4.  public $name
  5.  function vod() { 
  6.   echo "hello"
  7.  } 
  8. $pc1 = new MyPc(); 
  9. $pc1->key = "10101010"
  10. echo $pc1->key; 
  11. ?> 

php面向對象第二天

1.創建一個和多個對象。

2.對象中的 $this 關鍵字。

3.初始化對象 __construct()

4.析構函數 __destruct()

1.創建一個和多個對象

創建一個和多個對象我們只需要多次使用 new 函數,對類進行實例化。

實例代碼如下:

  1. class MyPc { 
  2. public $name
  3. public $price
  4. function vod() { 
  5. return "播放電影"
  6. .... 
  7. $pc1 = new MyPc(); 
  8. $pc2 = new MyPc(); 
  9. $pc3 = new MyPc(); 

2.對象中的 $this 關鍵字

$this 關鍵字是用來訪問當前對象中的對象屬性和對象方法的系統變量。

范圍:該類當中。

實例代碼如下:

  1. class MyPc { 
  2. public $name;-------- 
  3. public $price;      | 
  4.                     | 
  5. function vod() {    | 
  6. $this->name;<-------- 
  7. .... 
  8. $this->vod(); //這樣輸出調用的就是 public $name; 
  9. .... 

實例2代碼如下:

  1. <?php 
  2. class MyPc { 
  3.  public $name
  4.  function vod() { 
  5.   return $this->name . " 正在播放 未來戰警"
  6.  } 
  7.  function game() { 
  8.   return $this->vod() . " 正在運行 魔獸世界"
  9.  } 
  10. $pc1 = new MyPc(); 
  11. $pc2 = new MyPc(); 
  12. $pc1->name = "1號計算機"
  13. $pc2->name = "2號計算機"
  14. echo $pc1->vod() . "<br />"
  15. echo $pc2->game() . "<br />"
  16. ?> 

3.初始化對象 __construct()

初始化相當于就是預先預定好某個成員屬性的初始值。

格式:

  1. class MyPc { 
  2. function __construct() { 
  3. 初始化操作 

實例代碼如下:

  1. <?php 
  2. class MyPc { 
  3.  public $name
  4.  function __construct($name = "") { //初始化。 
  5.   $this->name = $name//把初始化內容第四行的 $name = "" 賦值給 $this 取到的第三行的 public $name;。 
  6.  } 
  7.  function vod() { 
  8.   return $this->name . " 正在播放 未來戰警"
  9.  } 
  10.  function game() { 
  11.   return $this->vod() . " 正在運行 魔獸世界"
  12.  } 
  13. $pc1 = new MyPc("1號計算機"); //這里進行初始化。 
  14. $pc2 = new MyPc("2號計算機"); 
  15. echo $pc1->vod() . "<br />"
  16. echo $pc2->game() . "<br />"
  17. ?> 

4.析構函數 __destruct()

能夠在對象釋放時自動被調用的方法,被成為析構函數,也能理解為垃圾回收機制。

規則:后進先出,先實例化后釋放,最后實例化調用,最先釋放,最后被調用。

實例代碼如下:

  1. <?php 
  2. class MyPc { 
  3.  public $name
  4.  function __construct($name = "") { 
  5.   $this->name = $name
  6.  } 
  7.  function vod() { 
  8.   return $this->name . " 正在播放 未來戰警"
  9.  } 
  10.  function game() { 
  11.   return $this->vod() . " 正在運行 魔獸世界"
  12.  } 
  13.  function __destruct() { //后進先出。 
  14.   echo "<br />垃圾回收機制:" . $this->name . "<br />"
  15.  } 
  16. $pc1 = new MyPc("1號計算機"); 
  17. $pc2 = new MyPc("2號計算機"); 
  18. echo $pc1->vod() . "<br />"
  19. // $pc1 = null; //這里是當特殊需要執行完畢立即回收內存的話,可以使用null。 
  20. echo $pc2->game() . "<br />"
  21. ?> 

php面向對象第三天

類的封裝和應用

1.封裝關鍵字:public , protected , private。

2.封裝相關函數:__set() , __get()。

1.封裝關鍵字:public , protected , private

封裝是把一些相關的屬性和行為隱藏起來,從而得到保護和安全。

封裝關鍵字

public:表示全局,類內部外部子類都可以訪問。

protected:表示受保護的,只有本類或子類或父類中可以訪問。

private:表示私有的,只有本類內部可以使用。[重要:這個關鍵字在使用時,調用私有屬性或方法,只能在本類調用,感覺就像多一道工序,做一個跳板。詳見實例2]

       public     protected     private

 全局     1           0            0

繼承類    1           1            0

 本類     1           1            1

實例代碼如下:

  1. <?php 
  2. class MyPc { 
  3.  public $name//公共屬性 
  4.  protected $price//保護屬性 
  5.  private function vod() { //私有屬性 
  6.   $this->name; 
  7.  } 
  8.   . . . 
  9.  } 
  10. ?> 

實例2代碼如下:

  1. <?php 
  2. class MyPc { 
  3.  private $name
  4.  function __construct($name = "") { 
  5.   return $this->name = $name
  6.  } 
  7.  private function open() { 
  8.   return $this->name . "---打開電源,正在開機"
  9.  } 
  10.  public function ok() { 
  11.   return $this->open() . "---OK"
  12.  } 
  13. $pc = new MyPc("我的電腦"); 
  14. echo $pc->ok(); 
  15. ?> 

分裝相關函數: __set() , __get() 作用:操作私有屬性或方法。

__set():取得當前類中封裝過的私有屬性或私有方法,重新執行或賦值操作。

格式:__set($n,$v)

__get():取得(間接訪問防止裸輸出)當前類中封裝過的屬性或方法并轉換成公有屬性。

__get/__set實例代碼如下:

  1. <?php 
  2. class MyPc { 
  3.  private $name
  4.  public function __construct($name = "") { 
  5.   return $this->name = $name
  6.  } 
  7.  public function __get($name) { 
  8.   return $this->name . "__get"
  9.  } 
  10.  public function __set($n$v) { //$n對應對象屬性$name,$v對應倒數第三行__set。 
  11.   $this-> $n = $v
  12.  } 
  13.  private function open() { 
  14.   return $this->name . "---打開電源,正在開機"
  15.  } 
  16.  public function ok() { 
  17.   return $this->open() . "---OK"
  18.  } 
  19. $pc = new MyPc("我的電腦"); 
  20. $pc->name = "__set"
  21. echo $pc->name; 
  22. ?> 

類的繼承和應用

1.繼承關鍵字:extends。

2.PHP繼承的規則。

3.基類方法重載和基類方法訪問。

1.繼承關鍵字:extends

PHP類的繼承,我們可以理解成共享被繼承類(基類)的類容。

注意:PHP是單一繼承。

2.格式,代碼如下:

  1. class MyPc { 
  2. ... 
  3. class Home extends MyPc { 
  4. ... 

3.基類方法重載和基類方法訪問

格式:基類名::原始基類方法名稱

4.實例

繼承,代碼如下:

  1. <?php 
  2. class Root { 
  3.  public function print1() { 
  4.   return "Root_print"
  5.  } 
  6. class Son extends Root { 
  7.  public function print2() { 
  8.   return "Son_print"
  9.  } 
  10. $p = new Son(); 
  11. echo $p->print1(); 
  12. ?> 

重載,如果基類的某個方法需要在派生類中加強,那么可以用重載功能,代碼如下:

  1. <?php 
  2. class Root { 
  3.  public function print1() { 
  4.   return "Root_print"
  5.  } 
  6. class Son extends Root { 
  7.  public function print1() { 
  8.   return Root :: print1() . "<br />Son_print"
  9.  } 
  10. $p = new Son(); 
  11. echo $p->print1(); 
  12. ?> 

類的抽象方法和類

其實也可以理解為,這是一個規范。在類的開頭定義一個抽象類和方法,然后在下面的類繼承抽象類,這樣可以強制規范以下派生類的方法命名(就只是在抽象類中定義的抽象方法名,還可自己增加,但是主要的不能修改)。

1.抽象關鍵字:abstract。

2.抽象方法和抽象類的定義。

3.抽象類和方法使用規則。

1.抽象關鍵字:abstract

抽象就是無法確切的說明,但又有一定的概念或者名稱。

2.抽象方法和抽象類的定義

一個類至少有一個方法是抽象的,我們稱之為抽象類,所以如果定義抽象類首先定義抽象方法。

格式:

  1. abstract class class1 { 
  2. abstract function fun1(); 
  3. ... 

注意:1.類中至少有一個抽象方法。;2.抽象方法不允許有{}。;3.抽象方法前面必須加 abstract 。

3.抽象類和方法使用規則

抽象類特點:

1.不能被實例化,只能被繼承。

2.繼承的派生類當中要把所有抽象方法重載才能被實例化。

格式(不可以實例化):

  1. abstract class cl1 { 
  2. abstract function fun1(); 
  3. ... 

格式(可以實例化):

  1. class cl2 extends cl1 { 
  2. function fun1() { //重載抽象方法 
  3. ... 

實例代碼如下:

  1. <?php 
  2. abstract class ChouXiang { 
  3.  abstract function fun1(); 
  4. class PaiShengLei extends ChouXiang { 
  5.  public function fun1() { //重載 
  6.   echo "test"
  7.  } 
  8. $p = new PaiShengLei(); 
  9. $p->fun1(); 
  10. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永和县| 米易县| 哈尔滨市| 宁陕县| 天门市| 安顺市| 江阴市| 湾仔区| 茶陵县| 石渠县| 龙川县| 越西县| 讷河市| 姚安县| 龙南县| 三门峡市| 河间市| 罗田县| 资兴市| 武平县| 五大连池市| 鹤峰县| 贵阳市| 商洛市| 油尖旺区| 会东县| 牟定县| 乃东县| 鹤壁市| 宜章县| 通化县| 如东县| 新绛县| 旬阳县| 什邡市| 定州市| 响水县| 武邑县| 垣曲县| 响水县| 汾西县|