首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 面向物件基礎:繼承、存取控制、靜態成員、final、資料存取關鍵字

     編輯:PHP 相關知識

PHP OOP 基石:類別結構與成員控制完整指南

掌握繼承機制、三種存取層級、static 靜態特性、final 限制繼承/覆寫、以及 parent/self/static 關鍵字的正確用法,是 PHP 物件導向程式設計的入門必修課。

一、繼承:代碼復用與多型基礎

  • 子類別自動擁有父類別 non-private 成員
  • 可新增、覆寫、擴展父類別功能
  • 單一繼承:一個子類別只能繼承一個父類別
class Animal {
    private $weight;
    public function getWeight() { return $this->weight; }
    public function setWeight($w) { $this->weight = $w; }
}

class Dog extends Animal {
    public function bark() { echo "Wang~~"; }
}

$dog = new Dog();
$dog->setWeight(20);
echo $dog->getWeight(); // 20
$dog->bark(); // Wang~~

二、存取控制:封裝核心

修飾詞類別內部子類別外部代碼
public✓✓✓
protected✓✓✗
private✓✗✗

最佳實踐:屬性預設 private,透過 public/protected 方法存取;僅在需子類別直接操作時用 protected。

三、static 靜態關鍵字

  • 靜態屬性:屬於類別,所有實例共享,不需實例化即可存取
  • 靜態方法:僅能存取靜態成員,$this 不可用
  • 存取方式:
    • 類別內部:self::$prop、static::$prop(晚期靜態綁定)
    • 子類別存取父類:parent::$prop
    • 外部:ClassName::$prop、ClassName::method()
class Counter {
    public static $count = 0;
    public function __construct() { self::$count++; }
    public static function getCount() { return self::$count; }
}
echo Counter::getCount(); // 0
new Counter(); new Counter();
echo Counter::getCount(); // 2

四、final 關鍵字

  • final class:禁止被繼承
  • final function:禁止被覆寫
final class SecurityTool { /* ... */ }
// class Hack extends SecurityTool {} // Fatal error

class Base {
    final public function critical() { /* 不可覆寫 */ }
}

五、資料存取關鍵字比較

關鍵字用途存取靜態屬性存取靜態方法存取類別常數存取實例屬性存取實例方法
self當前類別(編譯期綁定)✓✓✓✗✓
static實際調用類別(運行期綁定,LSB)✓✓✓✗✓
parent父類別✓✓✓✗✓
$this->當前實例✗✗✗✓✓

關鍵差異:self vs static(晚期靜態綁定)

class A {
    public static function who() { echo __CLASS__; }
    public static function testSelf() { self::who(); }
    public static function testStatic() { static::who(); }
}
class B extends A {
    public static function who() { echo __CLASS__; }
}
B::testSelf();  // A(self 綁定寫死在 A)
B::testStatic(); // B(static 依實際調用類別)

總結

熟練掌握存取控制、static 語義、final 限制、以及 self/static/parent 的綁定時機,能寫出封裝良好、擴展性強的 PHP 類別體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved