首頁 >後端開發 >php教程 >php oop的特性是什麼? php oop思想的三大特色介紹

php oop的特性是什麼? php oop思想的三大特色介紹

不言
不言原創
2018-07-25 14:10:307064瀏覽

php oop思想的三大特性分別為:封裝,繼承以及多態,在這裡,我將具體的和大家說一下對php opp思想的理解,那麼,接下來我們就來具體的看一看opp思想的三大特徵及php opp思想。
封裝性

封裝性就是把物件的屬性和行為結合成一個獨立的單位。
封裝一個類別需要兩步驟第一步是私有化一個類別第二步是用set和get 做出讀取賦值的操作
他的好處是:隱藏類別的實作細節,可以方便加入邏輯控制性,限制屬性不合理的操作,便於修改增強程式碼的可維護性。

__get與__set
一般說把類別私有話更符合現實的邏輯。
預先定義兩種函數來進行取得與敷值運算。
__get 取得值通常是域的值
__set 設定值通常是域的值
__call 呼叫一個物件中不存在的方法時,就會產生錯誤call()這個方法來處理這種情況。

靜態屬性和方法
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 INFO
printinfo($b); //输出B INFO
printinfo($c); //输出C INFO

抽象方法和抽象類別

抽象方法是作為子類別摸版使用的。


abstract class Person{
public $name;
abstract function getInfo();
}

抽象類別不能被實力話,一個抽象類別中,必須有一個抽象方法。但是抽象類別中可以定義動態函數。

介面
當一個類別繼承了一個介面之後,它要覆寫介面的所有方法,介面只能宣告常數,介面的方法必須定義為共有否則無法繼承,介面可以與多個介面間繼承
語法:

interface PCI{
const TYPE="PCI";
//public $name; error
function start();
function stop();
}
接口中的方法可以声明为static
interface 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn