首先,在解釋物件導向之前先解釋下什麼是物件導向?
[物件導向]
1、什麼是類?
具有相同屬性(特徵)和方法(行為)的一系列個體的集合,類是乙個抽象的概念
2、什麼是物件?
從類中拿到的具有具體屬性值得個體,稱為物件,物件是乙個具體的個體
所以,物件導向即我們專注物件來處理問題,通過從乙個個具有屬性和功能的類中拿到物件來處理問題。
下面我們再來細說下物件導向的三大特徵:繼承/封裝/多型
一、繼承
在php中我們主要通關extends關鍵字來實現繼承 ->class student extends person{}
下面是幾個比較重要的注意事項:
①子類只能繼承父類的非私有屬性。
②子類繼承父類後,相當於將父類的屬性和方法copy到子類,可以直接使用$this呼叫該屬性;
③php只能單繼承,不支援乙個類繼承多個類。但是乙個類可以進行多層繼承(即a繼承於b,而c又繼承於a,c通過a間接繼承了b)
二、封裝
類實現封裝是為了不讓外面的類隨意的修改乙個類的成員變數,所以在定義乙個類的成員的時候,我們使用private關鍵字設定這個成員的訪問許可權
只能被這個類的其他成員方法呼叫,而不能被其他類中的方法呼叫,即通過本類中提供的方法來訪問本類中的私有屬性。
①所以在該類中我們會提供乙個訪問私有屬性的方法
②然後我們一般會定義兩個方法來實現對乙個變數的操作,即:get()與set()方法。
**示例如下:
class person
function setage($age)else
}function getage()
public function say(),我今年歲了";
}function __get($name)
}function __set($key,$value)else
}function __isset($name)
function __unset($name)
unset($this->$name);}}
$zhangsan = new person("zhangsan",14);
$zhangsan->setage(12);
echo $zhangsan->getage()."
";var_dump(isset($zhangsan->name));
unset($zhangsan->age);
echo $zhangsan->age;
多型:
什麼是多型?
乙個類,被多個子類繼承,如果這個類的某個方法,在多個子類中,表現出不同的功能,我們稱這種行為為多型。(同乙個類的不同子類表現出不同的形態)
那麼我們如何來實現多型呢?
子類繼承父類 ->子類重寫父類方法 ->父類引用指向子類物件
abstract class person
class chinese extends person
} class english extends person
}$zhangsan = new chinese();
$zhangsan->say();
$z = new english();
$z->say();
person $p = new chinese(); 注:父類引用指向子類物件
上述**中,兩個子類都是繼承自同一父類,但因為都重寫了父類的方法,表現出了不同的形態
php中的封裝 繼承 多型
1 封裝 隱藏實現的細節,模組化。一是方法封裝,即將使用者關注的功能暴露,而隱藏其他使用者用不到的功能 二是屬性封裝,即對使用者的資料進行控制,防止不合法的資料傳輸設定。2 繼承 繼承是實現 重用。php中用extends實現繼承。在子類中用extends繼承父類,子類可以繼承來自父類的非私有屬性和...
PHP 封裝 繼承 多型。
物件導向的三個基本特徵是 封裝 繼承 多型。封裝最好理解了。封裝是物件導向的特徵之一,是物件和類概念的主要特性。封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。物件導向程式設計 oop 語言的乙個主要功能就是 繼承 繼承是指這樣一種...
類的封裝繼承多型
繼承 子類繼承父類上的屬性和方法 目的是讓子類的例項享有父類的屬性和方法 為什麼要繼承?步驟 套路 定義父型別建構函式 給父型別的原型新增方法 定義子型別的建構函式 繼承父型別 子型別的原型為父型別的乙個例項物件 關鍵 讓子型別的原型的constructor指向子型別 給子型別的原型新增方法 建立子...