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

首頁 > 編程 > PHP > 正文

php面向對象的特征是什么?PHP面向對象特征的介紹(代碼)

2020-03-22 18:46:54
字體:
來源:轉載
供稿:網友
這里所說的PHPhtml' target='_blank'>面向對象,準確的說應該叫做PHP面向對象編程,php面向對象編程的三個基本特征分別為封裝、繼承和多態,下面我們就來分別看看PHP面向對象的三大特征。

一、php面向對象三大特征:
1、封裝:
封裝就是把抽象出的數據和對數據的操作封裝在一起,數據被保護在內部,程序的其他部分只有通過被授權的操作(成員方法)才能對數據進行操作。

訪問控制符賦值取值.png

2、繼承:
所謂繼承,就是一個子類通過extends 父類 把父類的一些(public / protected)屬性和(public / protected)方法繼承下來。不能繼承私有的。

  作用:增加代碼復用性,管理代碼成本低。   基本語法:  class 類名 extends 父類名 {        //需要的非私有屬性和方法  }

繼承.png

<?php        //父類    Class Student {        public $name;        protected $age;        protected $grade;        // public __construct() {        // }        public function showInfo() {            echo $this -> name."<br/>".$this -> age;        }    }    /**    * 小學生    */    class Pupil extends Student    {        public function test() {            echo "<br/>小學生在考試。。。";        }    }    /**    * 大學生    */    class Graduate extends Student    {        public function test() {            echo "<br/>大學生在考試。。。";        }     }    $stu1 = new Pupil();    $stu1 -> name = "lizzy";    $stu1 -> test();    $stu1 -> showInfo();    $stu2 = new Graduate();    $stu2 -> name = "zxm";    $stu2 -> test();    $stu2 -> showInfo();?>

注意:
(1)protected屬性和方法受保護,在子類不能直接調用,要在子類中定義方法訪問。

Class ParentClass {    public $name = 'lizzy';    protected $age = 24;    private $sex = "女";    public function test1() {        echo "<br/>展示public方法";    }    protected function test2() {        echo "<br/>展示protected方法";    }    private function test3() {        echo "<br/>展示private方法";    }}Class SubClass extends ParentClass {    function show() {        echo "age=".$this->age;        // echo "sex=".$this->sex;//是不能繼承下來的        $this -> test2();    }}$sub1 = new SubClass();$sub1 -> show();$sub1 -> test1();

(2)如果希望子類調用父類的構造方法,或者其他方法(public / protected),可以使用類名::方法名; 或者parent::方法名;

Class A {    public $n1=90;    public function __construct() {        echo "A的構造方法";    }}Class B extends A {    function __construct() {        echo "B的構造方法";        //調用父類的兩種方法        // A::__construct();        parent::__construct();    }}$b = new B();

(3)當一個子類的方法和父類方法(protected/public)完全一致時,我們稱之為方法的覆蓋(重寫)。

3、多態:
“重載”是類的多態的一種表現;
重載的概念:函數名一樣,通過函數的參數個數或者參數類型不同,達到調用同一個函數名,但是可以區分不同的函數。

魔法函數__call,但不推薦使用; 它一個對象調用某個方法,而該方法不存在,則系統會自動調用__call。

<?php    Class A {        public function test1($p) {            echo "接收一個參數<br/>";        }        public function test2($p) {            echo "接收兩個參數<br/>";        }        //提供__call 它一個對象調用某個方法,而該方法不存在,則系統會自動調用__call        function __call($method,$p) {            if ($method == "test") {                if (count($p) == 1) {                    $this -> test1($p);                } elseif (count($p) == 2) {                    $this -> test2($p);                }            }        }    }    $a = new A();    $a -> test(1);    $a -> test(21,43)?>

常見魔法常量:兩個下劃線LINE兩個下劃線;當前多少行;
兩個下劃線FILE兩個下劃線;當前文件的絕對路徑;

方法的重寫/覆蓋(override):
1、當一個父類知道所有的子類都有一個方法,但是父類不能確定該方法究竟如何寫,可以讓子類去覆蓋這個方法。
使用如下:

<?php    Class Animal {        function cry() {            echo "不知道怎么叫";        }    }    //重寫    Class Dog extends Animal {        function cry() {            echo "小狗汪汪叫";        }    }    //重寫    Class Pig extends Animal {        function cry() {            echo "小豬哼哼叫";        }    }    $dog = new Dog();    $dog -> cry();    $pig = new Pig();    $pig -> cry();?>

方法重寫的細節:
1、重寫子類的函數名和參數個數必須和父類的一致;但不要求參數的名稱一樣。
2、如果子類要去調用父類的某個方法(public / protected)可以使用parent::方法名(); 或者父類名::方法名(); 可根據情況是否傳參。
3、實現方法覆蓋時,訪問修飾符可以不一樣,但是必須滿足子類的訪問范圍>=父類的訪問范圍。

多態體現的地方:
當子類沒有覆蓋父類的方法,則子類調用的是父類,當子類覆蓋了父類的方法則調用的是自己的方法。

相關推薦:

PHP 零基礎入門教程

談談我對php中面向對象的理解

以上就是php面向對象的特征是什么?PHP面向對象特征的介紹(代碼)的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 榆树市| 开鲁县| 盐亭县| 安远县| 广灵县| 龙海市| 峡江县| 兰州市| 吴桥县| 德令哈市| 滕州市| 三门峡市| 神木县| 喀喇沁旗| 商水县| 永清县| 密山市| 双柏县| 察隅县| 巴彦县| 娄烦县| 仙游县| 阳城县| 特克斯县| 德令哈市| 喀喇| 宁国市| 沭阳县| 罗江县| 龙山县| 洛川县| 博爱县| 马公市| 虞城县| 芒康县| 嘉黎县| 横峰县| 凤台县| 英德市| 交口县| 旬阳县|