首頁 後端開發 php教程 PHP对象Object的概念 介绍_PHP

PHP对象Object的概念 介绍_PHP

Jun 01, 2016 pm 12:11 PM
object

例如,员工管理应用程序可能包括一个EmPloyee 类。然后可以用这个类来创建和维护特定实例,比如Gonn和Sally。

根据预定义的类创建对象常称为类的实例化(class instantiation)。

对象使用new关键字创建,如下:

复制代码 代码如下: $employee = new Employee();

创建对象之后,这个刚实例化的对象就具有了类中定义的所有性质和行为。

如何实例化对象
面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了。当定义好类后,我们使用new关键字来生成一个对象。
复制代码 代码如下:
class Person
{
//下面是人的成员属性
var $name; //人的名字
var $sex; //人的性别
var $age; //人的年龄

//下面是人的成员方法
function say() //这个人可以说话的方法
{
echo "这个人在说话";
}

function run() //这个人可以走路的方法
{
echo "这个人在走路";
}
}

$p1=new Person();
$p2=new Person();
$p3=new Person();

$p1=new Person();

这条代码就是通过类产生实例对象的过程,$p1就是我们实例出来的对象名称,同理,$p2, $p3也是我们实例出来的对象名称,一个类可以实例出多个对象,每个对象都是独立的,上面的代码相当于实例出来3个人来,每个人之间是没有联系的,只能说明他们都是人类,每个人都有自己的姓名,性别和年龄的属性,每个人都有说话和走路的方法,只要是类里面体现出来的成员属性和成员方法,实例化出来的对象里面就包含了这些属性和方法。

对像在PHP里面和整型、浮点型一样,也是一种数据类,都是存储不同类型数据用的,在运行的时候都要加载到内存中去用, 那么对象在内存里面是怎么体现的呢?内存从罗辑上说大体上是分为4段, 栈空间段、堆空间段、代码段、 初始化静态段,程序里面不同的声明放在不同的内存段里面,栈空间段是存储占用相同空间长度并且占用空间小的数据类型的地方,比如说整型1, 10, 100, 1000, 10000, 100000等等,在内存里面占用空间是等长的,都是64位4个字节。 那么数据长度不定长,而且占有空间很大的数据类型的数据放在那内存的那个段里面呢?这样的数据是放在堆内存里面的。栈内存是可以直接存取的,而堆内存是不可以直接存取的内存。对于我们的对象来数就是一种大的数据类型而且是占用空间不定长的类型,所以说对象是放在堆里面的,但对象名称是放在栈里面的,这样通过对象名称就可以使用对象了。

$p1=new Person(); 对于这个条代码, $p1是对象名称在栈内存里面,new Person()是真正的对象是在堆内存里面的。

等号右边是真正的对象实例,在堆内存里面的实体。这里一共有3次new Person(),所以会在堆里面开辟3个空间,产生3个实例对象,每个对象之间都是相互独立的,使用自己的空间,在PHP里面,只要有一个new这个关键字出现就会实例化出来一个对象,在堆里面开辟一块自己的空间。

每个在堆里面的实例对象是存储属性的,比如说,现在堆里面的实例对象里面都存有姓名、性别和年龄。每个属性又都有一个地址。$p1=new Person();等号的右边$p1是一个引用变量,通过赋值运算符“=”把对象的首地址赋给“$p1”这个引用变量,所以$p1是存储对象首地址的变量,$p1放在栈内存里边,$p1相当于一个指针指向堆里面的对象,所以我们可以通过$p1这个引用变量来操作对象,通常我们也称对象引用为对象。

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java Object類別中的方法怎麼用 Java Object類別中的方法怎麼用 Apr 18, 2023 pm 06:13 PM

1.Object類別介紹Object是Java預設提供的一個類別。 Java裡面除了Object類,所有的類別都是存在繼承關係的。預設會繼承Object父類別。即所有類別的物件都可以使用Object的參考來接收。範例:使用Object接收所有類別的物件classPerson{}classStudent{}publicclassTest{publicstaticvoidmain(String[]args){function(newPerson());function(newStudent());}public

java Object轉byte與byte轉Object的方法是什麼 java Object轉byte與byte轉Object的方法是什麼 Apr 20, 2023 am 11:37 AM

Object轉byte與byte轉Object今天實作如何從Object去轉為byte和如何從byte轉為Object。首先,定義一個類別student:packagecom.byteToObject;importjava.io.Serializable;publicclassstudentimplementsSerializable{privateintsid;privateStringname;publicintgetSid(){returnsid;}publicvoidsetSid(in

Java使用Object類別的getClass()函數取得物件的執行時間類 Java使用Object類別的getClass()函數取得物件的執行時間類 Jul 24, 2023 am 11:37 AM

Java使用Object類別的getClass()函數取得物件的執行時間類別在Java中,每個物件都有一個類,這個類別定義了物件的屬性和方法。我們可以使用getClass()函數來取得物件的運行時類別。 getClass()函數是Object類別的成員函數,所以所有的Java物件都可以呼叫該函數。本文將介紹getClass()函數的使用方法以及給一些程式碼範例。使用get

java中基本資料型別與Object的關係是什麼 java中基本資料型別與Object的關係是什麼 May 01, 2023 pm 04:04 PM

基本資料型別與Object的關係我知道大家是不是都聽說過Object是所有類型的基類,但是這句話其實並不是正確的,因為java中基本資料型別跟Object是沒有任何關係的.這裡舉一個例子這裡在進行呼叫swap方法時,是不能直接將int型別傳給swap(Objectobj)方法的,因為Object其實跟基本資料型別沒有一點關係,這時候a就發現我們型別不匹配,所以就自動包裝成了Integer型別了,這個時候就能跟Object產生聯繫了,才能成功呼叫swap方法了.Object、基本資料型別的包裝類

PHP Notice: Trying to get property of non-object解決方法 PHP Notice: Trying to get property of non-object解決方法 Jun 24, 2023 pm 09:34 PM

PHPNotice:Tryingtogetpropertyofnon-object解決方法當你在使用PHP進行開發時,你可能會遇到這樣的錯誤提示:「Notice:Tryingtogetpropertyofnon-object。」這個錯誤提示通常是由於你使用了一個未初始化的對象,或是你的物件在某一段程式碼中遺失了引用,因此無法正確存取屬

redis的Object結構體怎麼定義 redis的Object結構體怎麼定義 May 28, 2023 pm 05:20 PM

Redis的兩層資料結構簡介redis的效能高的原因之一是它每種資料結構都是經過專門設計的,並且都有一種或多種資料結構來支持,依賴這些靈活的資料結構,來提升讀取和寫入的效能。如果要了解redis的資料結構,可以從兩個不同的層面來討論它:第一個層面,是從使用者的角度,這一層面也是Redis暴露給外部的調用接口,例如:string,list,hash ,set,sortedset。第二個層面,是從內部實現的角度,屬於更底層的實現,例如:dict,sds,ziplist,quicklist,skiplis

PHP Notice: Trying to get property of non-object的解決方法 PHP Notice: Trying to get property of non-object的解決方法 Jun 22, 2023 pm 02:43 PM

PHPNotice:Tryingtogetpropertyofnon-object的解決方法在使用PHP編寫程式碼的過程中,我們可能會遇到「Tryingtogetpropertyofnon-object」的錯誤提示。這個錯誤提示通常是由於我們在嘗試存取一個不存在的物件屬性,導致程式碼出現了錯誤。這個錯誤提示通常會出現在以下情況:物件不存

如何使用Java中的Object類別和System類別? 如何使用Java中的Object類別和System類別? Apr 23, 2023 pm 11:28 PM

Object是java所有類別的基類,是整個類別繼承結構的頂端,也是最抽象的一個類別。大家天天都在使用toString()、equals()、hashCode()、waite()、notify()、getClass()等方法,或許都沒有意識到是Object的方法,也沒有去看Object還有哪些方法以及思考為什麼這些方法要放到Object中。一、JavaObject類別簡介-所有類別的超類別Object是Java類別庫中的一個特殊類,也是所有類別的父類別。也就是說,Java允許把任何類型的物件賦給Object類型的

See all articles