手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

通过类实例化对象

时间:2024-10-12 22:54:00

1、面向对象程序的单位就是对象,但对象又是通过类的实例化出来的。所以同一个类的对象可以接受相同的请求,例如,所有的汽车都可以通过方向盘控制方向。如果你仅会声明一个类,这还不够,因为在程序中并不是直接在使用类,而是使用通过类创建的对象。所以在使用对象之前先要通过声明的类实例化出一个或多个对象为我们所用。实例化对象将类实例化成对象非常容易,只使用new关键字并在后面加上一个和类名同名的方法。当然如果在实例化对象时不需要为对象传递参数,在new关键字后面直接用类名称即可,就不需要再加上括号。对象的实例化格式如下:$变量名 = new 类名称([参数数列表]); //对象实例化格式或$变量名 = new 类名称 //对象实例化格式,不需要为对象传参数其中,”$变量名”是通过类所创建的一个对象的引用名称,将来通过这个引用来访问对象中的成员。New表明要创建一个新的对象,类名表示新对象的类型,而参数指定了类的构造方法用于初始化对象的值。如果累中没有定义构造函数,PHP会自动创建一个不带参数的默认构造函数//声明一个phone类Class Phone{ //类中成员}//声明一个人类personClass Person{ //类中成员}//通过person类实例化三个对象$person1、$person2、$person3$person1= new Person(); //创建第一个person类对象,引用名为$person1$person2 = new Person(); //创建第二个person类对象,引用名为$person2$person3 = new Person(); //创建第三个person类对象,引用名为$person3//通过phone类实例化三个对象$phone1、$phone2、$phone3$phone1 = new Phone(); //创建第一个phone类对象,引用名为$phone1$phone2 = new Phone(); //创建第一个phone类对象,引用名为$phone2$phone3 = new Phone(); //创建第一个phone类对象,引用名为$phone3一个类可以实例化出多个对象,每个对象都是独立的。在上面的代码中国国Person类实例化出三个对象$person1、$person2、$person3,相当于在内存中开辟了三分空间用于存放每个对象。使用同一个类声明的多个对象之间是没有联系的,职能说明他们都是同一个类型,每个对象内部都由类中声明的成员属性和成员方法,就像独立的三个人,都有自己的姓名、性别、和年龄的属性,每个人都由说话、吃放和走路的方法。在上例中,使用同样的方法通过”Phone”类也实例化出三个对象,对象的引用分别为$phone1、$phone2、$phone3也是在内存中使用三个独立的空间分别存储,就像三部电话之间的关系

2、对象类型在内存中的分配对象类型和整形、字符串等类型一皱诣愚继样,也是PHP中的一种数据类型。都是在程序中用于存储不同类型数据使用的,在程序运行时它的每部分内容都要先加载到内存中再被使用。那么对象类型的数据在内存中是如何分配的呢?先来了解一下内存结构。逻辑上内存打铁上分为四段,分别为栈空间段、堆空间段、初始化数据段和代码段,程序中不同类型数据的声明将会被存放在不同的内存段里面。每段内存的特点如下:1、 栈空间段栈的特点是空间小但被CPU访问的速度快,是用户存放程序中临时创建的变量。由于栈的后进先出特点,所以栈特别方便用于保存和恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个临时数据寄存,交换的内存区。用于存储占用空间长度不变并且占用空间小的数据类型的内存段,例如整型1、100、10000等在内存中占用空间是等长的,占用的空间都是32位4个字节。还有double、boolean等都可以存储在栈空间段中。1堆空间段堆是用于存放进程运行中被动态分配的内存段,它大小并不固定,可动态空账或缩减。用于存储数据长度可变或占用内存比较大的数据。例如,字符串、数组和对象存储在这段内存中。3数据段数据段用来存放可执行文件中已初始化全局变量,换句话说就是存放程序静态分配的变量。4代码段代码段是用来存放可执行文件的操作指令,也就是说它是可执行程序在内存中的镜像。代码段需要放置在运行时被非法修改,所以只准许读取操作,而不允许写入(修改)操作。例如,程序中的函数就存储在这段内存中。对象类型的数据就是一种占用空间比较大的数据类型,并且是占用的空间不定长的数据类型,所以对象创建完成以后被存放在堆内存中,但对象的引用名称是存放在栈里面的。程序在运行时,栈内存中的数据是可以直接存取的,而堆内存是不可以直接存取的内存,但可以通过对象的引用名称访问对象中的成员。如上例通过Person类实例化的三个对象使用图形抽象出来,用来了解对象类型的数据是如何在内存中存储的,进一步了解对象类型的数据。在PHP中,只要使用一次new关键字就会实例化出来一个对象,并在堆里面开辟一块自己的空间。上例中执行了三次”new Person()”,则创建了三个Person类的实例对象,堆里面开辟三个独立空间。每个对象之间都是相互独立的,使用自己的空间,而且在每个空间都存有Person类中声明的成员。在内存中,存储数据的每个空间都有一个独立的内存地址,内存的地址通常是使用十六进制数表示,对象中的每个成员在堆内存中存储时都会由一个地址,第一个对象的首地址为”0xff001”,如果在程序中知道内存的首地址,就会按顺序找到对象中的每个成员。而在”$person1=new Person()”语句中,通过赋值运算符”=”把第一个对象在堆内存中的首地址”0xff001”赋给了变量$person1,所以等号左边的$person1就是第一个对象的引用变量.变量$person1存放的是一个十六进制整数会被存放在栈内存中。$person1是一个存储地址的变量,相当于一个指针指向堆里面的对象。所以访问第一个对象中的每个成员毒药通过这个引用变量$person1来完成,通常也可以把对象引用当成对象来看待。同样,第二个对象的首地址”0xff002”赋给栈里面的引用变量”$person2”,通过这个引用变量访问第二个对象中的每个成员。

© 手抄报圈