封裝性就是把對象的屬性和行為結合成一個獨立的單位。
封裝一個類需要兩步 第一步是私有化一個類 第二步是用set和get 做出讀取賦值的操作
他的好處是:隱藏類的實現細節,可以方便加入邏輯控制性,限制對屬性的不合理操作,便于修改增強代碼的可維護性。
__get與__set
一般說把類私有話更符合現實的邏輯。
預定義兩種函數來進行獲取與敷值操作。
__get 獲取值通常是域的值
__set 設置值通常是域的值
__call 調用一個對象中不存在的方法時,就會產生錯誤call()這個方法來處理這種情況。
靜態屬性和方法
html' target='_blank'>static關鍵字 來聲明靜態方法
static靜態變量 在類的內部生成一個靜態變量 就是能夠被所有類的實力化共想 也就是說靜態成員則放到了“初始化靜態段”,在類第一次被加載的時候放入的,可以讓堆內存里面的每個對象所共享
使用方法:self::$靜態屬性、self::靜態方法
static function p(){echo self::$country;echo self::PI;//訪問常量//echo $this- name;在靜態方法中只能操作靜態屬性//self::p();}
外部調用:類::$靜態屬性、類::靜態方法
const關鍵字:用來生成常量 常量是唯一的不能改變的 慣例常量為大寫
const CONSTANT = constant value 生成一個常量
echo self::CONSTANT;//類內部訪問
echo ClassName::CONSTANT;//類外部訪問
繼承性
B類的對象擁有A類的全部屬性與行為,稱作B對A類的繼承。
假如一個類從多個類中繼承了屬性與服務,這稱為多繼承,通常我們成為繼承類為子類被繼承類為父類,在PHP中只有單繼承,但一個父類可以被多個類繼承,但是一個子類只能有一個父類,但是允許關聯繼承,通過繼承可以減化類的定義。
extende聲明繼承關系
語法格式:class B extends A 此范例指明 B繼承了A
類的外部訪問對子類是有效的
子類與父類的屬性與方法
子類繼承父類的所有內容,但父類中的private部分不能直接訪問
子類中新增加的屬性和方法是對父類的擴展
子類中定義的與父類同名的屬性是對父類屬性的覆蓋,同名的方法也是對父類方法的覆蓋
重寫的方法
在子類中,使用parent訪問父類中的被覆蓋的屬性和方法
parent::__construce();
parent::$name;
parent::fun();
覆蓋父類原有屬性
clone克窿對象 語法格式$c=clone $p; $c克窿的對象$p 輸出echo $c- name;
對象比較
===兩個比較運算符。
==是比較兩個對象的內容。
===是比較對象的句柄,即引用地址。
instanceof操作符用于檢測對象實力是否屬于某一個類的類型 屬于返回true 不屬于返回false
__clone()如果想在克隆后改變原對象的內容,需要在__clone()中重寫原本的屬性和方法
function __clone(){$this- name= 我是一個克隆人 }
final表示一個類是最終版本 也就是說它不能在被子類調用
多態性
多態性是指在父類中定義的屬性或行為被子類繼承之后,可以具有不同的數據類型或表現出不同的行為。這使得同一個屬性或行為在父類及其各個子類中具有不同的語義。
就是說同一種方法在子類與父類中執行的結果不同。
class A {function info(){echo “A INFO”;class B extends A {function info(){echo “B INFO”;class C extends A {function info(){echo “C INFO”;function printinfo($obj){function printinfo(A $obj){if($obj instanceof A)$obj- info();$obj- info();$a=new A(); $b=new B(); $c=new C();printinfo($a); //輸出A INFOprintinfo($b); //輸出B INFOprintinfo($c); //輸出C INFO
抽象方法和抽象類
抽象方法是作為子類摸版使用的。
abstract class Person{public $name;abstract function getInfo();}
抽象類不能被實力話,一個抽象類中,必須有一個抽象方法。但是抽象類中可以定義動態函數。
接口
當一個類繼承了一個接口之后,它要覆蓋接口的所有方法,接口只能聲明常量,接口的方法必須定義為共有否則無法繼承,接口可以與多個接口間繼承
語法:
interface PCI{const TYPE= PCI //public $name; errorfunction start();function stop();接口中的方法可以聲明為staticinterface A{ function a();}interface B{ function b();}interface C extends A{ function c();}class D implements B,C{function a(){}function b(){}function c(){}}
相關推薦:
PHP OPP機制和模式簡介(抽象類、接口和契約式編程)_php實例
以上就是php oop的特性是什么?php oop思想的三大特點介紹的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答