溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php 面向?qū)ο蠡A(chǔ)總結(jié)

發(fā)布時間:2020-07-03 15:03:00 來源:網(wǎng)絡(luò) 閱讀:317 作者:GIpanda 欄目:web開發(fā)

封裝

封裝,繼承,多態(tài)是面向?qū)ο蟮娜筇匦?,本文總結(jié)一下 php 是如何實現(xiàn)這三大特性的

封裝

創(chuàng)建類

普通類

class className{
    public $attribute1  //成員屬性

    //成員方法
    function fun1(){
        echo "method1"
    }         
}

抽象類

abstract class className1{
    //抽象方法
    abstract public function fun1();
    abstract private function fun2();
    abstract protected function fun3();
}
  • 抽象類至少有一個抽象方法

  • 抽象類不能被實例化,只能被繼承 extends

  • 繼承的派生類要把所有方法重載才能實例化對象

接口

可以看做是一種成員屬性全部為抽象的抽象類,用作定義規(guī)范(面向接口編程)

interface IName {
    const NAME;
    function fun1();
}
  • 接口中方法 必須全為 抽象方法

  • 接口中成員方法和屬性為 public

  • 接口成員屬性必須為常量

  • 接口不能被實例化,只能被引用 implement

  • 被引用后,派生類不許把所有方法重載才能實例化對象

new 關(guān)鍵字

實例化對象,使用 -> 訪問對象內(nèi)容 (成員屬性和成員方法)

$instance1 = new className;    //實例化對象
$instance1->attribute1;        //訪問成員屬性
$instance1->method1();           //訪問成員方法

封裝關(guān)鍵字 public, protected, private

作用域publicprotectedprivate
全局YesNoNo
繼承類YesYesNo
本類YesYesYes

類的成員方法前如不加封裝關(guān)鍵字,默認(rèn)為public,不過最好加上關(guān)鍵字,便于閱讀

$this 關(guān)鍵字

訪問當(dāng)前 對象 中的成員屬性和成員方法

self:: 關(guān)鍵字

在不實例化的情況下訪問當(dāng)前 的成員屬性和成員方法, 作用域在定義類時確定。該關(guān)鍵字常與 static, const 搭配使用,用于訪問靜態(tài)成員和常量

類名:: 屬性名 或 類名:: 方法名

在不實例化的情況下訪問當(dāng)前 的成員屬性或成員方法。常用于在派生類中訪問基類成員

繼承

extends 關(guān)鍵字

php 只能單一繼承

class B extends A{
    ......
}

implements 關(guān)鍵字

用于引用接口,不同于繼承的單一性,一個類可以引用多個接口

class A implements demo1, demo2, demo3{
    ......
}

extends 與 implements 混用

先繼承后引用,單繼承多引用

class A extends B implements demo1, demo2, demo3{
    ......
}

final 關(guān)鍵字

final class className1{
    final func1(){
        ......
    }
}
  • 加了 final 關(guān)鍵字的類不能被繼承

  • 基類中加了 final 關(guān)鍵字的成員方法不能在派生類中被重載

多態(tài)

static 關(guān)鍵字

加了 static 關(guān)鍵字的成員方法和成員屬性不具備多態(tài)性,用于在不實例化的情況下訪問。靜態(tài)屬性單獨占用內(nèi)存,不會在對象實例化時被反復(fù)創(chuàng)建。

class className1{
    static $atrr1;
    static func1(){
        ......
    }
}

const 關(guān)鍵字

用于在類中定義常量,類似用于在外部定義常量的PHP關(guān)鍵字 define(); const 只能修飾類中的成員屬性

class className1{
    const NAME;
}

常量一般用大寫字母命名,且常量不使用 $ 符號

instanceof 關(guān)鍵字

用于判斷對象實例類型

$obj = new A();

if ($obj instanceof A) {
   echo 'A';
}

摘自php手冊

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI