【代碼總結】PHP面向對象之類與對象


一、類和對象的關系

  類的實體化結果是對象,而對象的抽象就是類。在開發過程中,我們通常都是先抽象(幻想)出一個類,再用該類去創建對象(實現幻想的內容)。在程序中,直接使用的是我們(實現幻想)的對象,而不是抽象(幻想)的類

二、面向對象和面向過程

1、什么是面向過程

  面向過程就好比一個人 自己洗衣服、做飯,什么事情都是自己解決

2、什么是面向對象

  面向對象就是那個人有了對象,讓對象去洗衣服、做飯。

三、如何抽象一個類

1 class 類名{
2     成員屬性:
3         姓名、性別、年齡、身高、體重
4     成員方法:
5         說話、走路、學習、吃飯、開車
6 }

所有的類都是從成員屬性和成員方法這兩方面去聲明,屬性和方法都是類中的成員,所以屬性又叫做成員屬性,方法又叫做成員方法

1、成員屬性  -->特征

  在對象中直接聲明變量就稱為成員屬性,可以在類中聲明多個成員變量,即對象中可以有多個成員屬性

class Person{
    var $name;    //聲明第一個成員屬性,用於儲存人的名字
    var age;      //聲明第一個成員屬性,用於儲存人的年齡
    var $sex;     //聲明第一個成員屬性,用於儲存人的性別
}

2、成員方法  -->功能

class Person{
    var $name;    //聲明第一個成員屬性,用於儲存人的名字
    var $age;      //聲明第一個成員屬性,用於儲存人的年齡
    var $sex;     //聲明第一個成員屬性,用於儲存人的性別
    function say(){   //聲明第一個方法
        echo '人在說話';   //定義人說話的功能
    }
    function run(){   //聲明第二個方法
        echo '人在跑步';   //定義人跑步的功能
    }
    function eat(){   //聲明第三個方法
        echo '人在吃飯';   //定義人吃飯的功能
    }
}

對象就是把相關的屬性和方法組織在一起。其中成員屬性和成員方法都是可以選的,可以只有成員屬性,也可以只有成員方法,也可以沒有成員。

四、實例化對象

一個類可以聲明多個對象,讓對象去訪問成員屬性和成員方法

class Person{
    var $name;    //聲明第一個成員屬性,用於儲存人的名字
    var $age;      //聲明第一個成員屬性,用於儲存人的年齡
    var $sex;     //聲明第一個成員屬性,用於儲存人的性別
    function say(){   //聲明第一個方法
        echo '人在說話';   //定義人說話的功能
    }
    function run(){   //聲明第二個方法
        echo '人在跑步';   //定義人跑步的功能
    }
    function eat(){   //聲明第三個方法
        echo '人在吃飯';   //定義人吃飯的功能
    }
}
// 實例化對象
$sqyy = new Person();
//成員屬性賦值
$sqyy -> name = "伊川";
$sqyy -> sex = "男";
$sqyy -> age = 26;
//訪問對象中的成員方法
$sqyy->eat();

五、特殊的對象引用 "$this"

  上面的示例中,我們是實例化一個對象之后再給成員屬性賦值和訪問成員方法的。那么 $this也可以在成員方法中使用,代表的是當前的這個對象

成員方法調用前的對象是誰,$this就代表誰

class Person{
    var $name;
    function info(){
        $this ->name = "SQYY";
    }

 六、構造方法與析構方法

 1、構造方法

   構造方法是對象創建完成后第一個被對象自動調用的方法,會初始化這個對象,當使用new關鍵字實例化對象時會自動觸發。

<?php
    class Person{
        //下面是聲明人的成員屬性,都是沒有初始值的,在創建對象時,使用構造方法賦給初始值
        var $name;   //定義人的名字
        var $sex;    //定義人的性別
        var $age;    //定義人的年齡
        
        function __construct($name="SQYY",$sex="男",$age=1){
            $this -> name = $name;  //在創建對象時,使用傳入的參數$name為成員屬性 $this->name賦初值
            $this -> sex = $sex;    //在創建對象時,使用傳入的參數$sex為成員屬性 $this->sex賦初值
            $this -> age = $age;    //在創建對象時,使用傳入的參數$sex為成員屬性 $this->age賦初值
        }
    
        //下面聲明人的成員方法
        function say(){
            echo "我的名字:" .$this ->name. " ,性別:" .$this -> sex ."  年齡" .$this ->age. "。<br>";
        }
    }
    
    $person1 = new Person();                   //創建對象$person1時會自動執行構造方法,默認傳參
    $person2 = new Person('張三');             //創建對象$person2時會自動執行構造方法,傳入第一個參數,其他默認傳參
    $person3 = new Person('李四','男');        //創建對象$person3時會自動執行構造方法,傳入前兩個參數,其他默認傳參
    $person4 = new Person('王五','女','20');   //創建對象$person4時會自動執行構造方法,傳入所有參數
    
    $person1 ->say();
    $person2 ->say();
    $person3 ->say();
    $person4 ->say();
?>

 

2、析構方法

  對象在銷毀之前最后一個被對象自動調用的方法,先創建 傳入變量后銷毀

<?php 
    header('Content-type:text/html;charset=utf-8');
    // 定義一個汽車的類
    class car{
        // 成員屬性
        public $name;
        public $color;

        //構造方法
        public function __construct($name,$color){
            $this->name = $name;
            $this->color = $color;
            echo "你創建了".$this->name.'<br>';
        }

        // 析構方法
        public function __destruct(){
            echo "你銷毀了".$this->name.'<br>';
        }
    }

    // 實例化對象
    $hanma = new car('悍馬','粉色','H2');
    $bmw = new car('寶馬','紅色','X7');
    $benchi = new car('奔馳','黑色','s600');

    // unset($bmw);
    $bmw = '1111';
 ?>

 

如果我們不引用變量,創建完對象之后就會銷毀。

<?php 

    header('Content-type:text/html;charset=utf-8');

    // 定義一個汽車的類
    class car{
        // 成員屬性
        public $name;
        public $color;

        //構造方法
        public function __construct($name,$color){
            $this->name = $name;
            $this->color = $color;
            echo "你創建了".$this->name.'<br>';
        }

        // 析構方法
        public function __destruct(){
            echo "你銷毀了".$this->name.'<br>';
        }
    }

    // 實例化對象
    new car('悍馬','粉色','H2');
    new car('寶馬','紅色','X7');
    new car('奔馳','黑色','s600');

 ?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM