Php中類的繼承,封裝,多型

2021-08-08 15:57:07 字數 1743 閱讀 9569

首先,在解釋物件導向之前先解釋下什麼是物件導向?

[物件導向]

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指向子型別 給子型別的原型新增方法 建立子...