PHP对象Object的概念
2024-10-13 01:47:46
类提供了一个基础,可以在此基础上创建实体(即这个类所建模的实体)的特定实例,这些特定实例称为对象(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这个引用变量来操作对象,通常我们也称对象引用为对象。
最新文章
- [转载]深入了解 Struts 1.1
- ASP.NET网站入侵第三波(fineui系统漏洞,可导致被拖库)
- 让 ASP.NET JS验证和服务端的 双验证 更简单
- ads 调试
- IE7局部滚动区域下绝对定位或相对定位元素不随滚动条滚动的bug
- ubuntu14.10服务器版安装xampp,配置域名端口访问
- Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本号的开发环境
- CSRF注入式攻击防御讲解
- ANDROID_MARS学习笔记_S01_012_RatingBar
- 打造无DLL版穿透防火墙Downloader
- Swift流程控制之循环语句和判断语句详解
- 2.Math对象
- 我爱Java系列之《JavaEE面试宝典》---【IO流面试总结】
- 新建jsp项目
- Django之cookie+session
- 域名ping不通,ip地址ping得通
- Pandas 的轴向连接 concat
- 【转】分布式环境下5种session处理策略(大型网站技术架构:核心原理与案例分析 里面的方案)
- JavaSE——转换流和缓冲流
- 【算法学习】有旋treap
热门文章
- Windows 2008 - 由于管理员设置的策略,该磁盘处于脱机状态
- ABP(现代ASP.NET样板开发框架)系列之17、ABP应用层——参数有效性验证
- Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果
- UIApplication和OpenUrl的基于使用方法
- Failure to find xxx in xxx was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced @ xxx
- quartz.net 时间表达式----- Cron表达式详解
- join和split的区别
- .NET Core RC2发布在即,我们试着用记事本编写一个ASP.NET Core RC2 MVC程序
- 详解Javascript中正则表达式的使用
- 手动制作微信h5分享活动页面