OOP-Class and Object

大家好,我是Ray!

今天想跟大家分享,什麼是Class,以及什麼是Object,還有他們之間的關係!

講到class就不得不講到object,而要解釋object就離不開class,這也常常是讓許多人感到困惑與不解的地方。

簡單來說,class算是一用來創造object的code模板。

廢話不多說,讓我們來創一個class先:

我們可以自訂我們喜歡的class的名稱,class的名稱可以是數字與字母的組成,但開頭的第一個字不可以是數字,如下面的code:

class MyAccessories
{
    // class body
}

雖然上面的東西看起來沒什麼用,但是這已經是一個符合標準的class

如上所述,我們說class是產出object的一個模板,現在讓我們來產出幾個object,如以下的code:

$accessory1 = MyAccessories();
$accessory2 = MyAccessories();

以上我們使用MyAccessories class 造出了兩個object,由於這兩個object是由同樣的class造出來的,所以他們有著相同的功能與類型。

那你會問,他們一樣嗎?

答案是,不。

或許在功能以及類型上它們是一樣的,但他們的確是不同的object。

我知道你可能還有疑惑,讓我們把他們印出來看看!新增以下的code:

var_dump($accessory1);
var_dump($accessory2);

沒有意外的話,你應該會印出下面的東西。#後面的編號代表著他們的獨特性。或許你會說,啊~這會不會是照順序來顯示#後面數字啊?

object(MyAccessories)#1 (0) {
}
object(MyAccessories)#2 (0) {
}

那我們再來做一個實驗

我們將var_dump內的object名稱互換,如果說#後面的數字只是照順序來顯示的話,照理說印出來的東西應該不會變,是吧?

var_dump($accessory2);
var_dump($accessory1);

你應該會印出下面的東西:

object(MyAccessories)#2 (0) {
}
object(MyAccessories)#1 (0) {
}

#後面的數字變了! 這代表一個事實,那就是每個object,儘管他們是由同一個class所產出的,都會有屬於自己的一組編號,代表他們的獨特性,所以每一個object都會是不同的。

如果你還有些困惑,讓我再來舉個例子:

Class就像是生產鑄件的模具,而object就像是被壓出來的鑄件,可以是一個鍵帽,或是一個同型號的耳機。外觀看來他們都是一模一樣的,但是他們確實是不同的獨立個體。
你或許可以在上面看到生產流水編號,那就相當於上面印出來的#後面的數字。

看完以上的文章,各位是否對class以及object有更深一層的認識了呢?

為什麼我們要使用Git? 為什麼要使用 VIM?

留言

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×