PHP对象Object的概念

 

类提供了一个基础,能够在此基础上建立实体(即这个类所建模的实体)的特定实例,这些特定实例称为对象(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这个引用变量来操做对象,一般咱们也称对象引用为对象。
相关文章
相关标签/搜索