4.如何抽象出一个类?
面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以我们首先要做的就是如何来声明类,做出来一个类很容易,只要掌握基本的程序语法定义规则就可以做的出来,那么难点在那里呢?一个项目要用到多少个类,用多少个对象,在那要定义类,定义一个什么样的类,这个类实例化出多少个对象,类里面有多少个属性,有多少个方法等等,这就需要读者通过在实际的开发中就实际问题分析设计和总结了。
类的定义:
class 类名{
}
使用一个关键字class和后面加上一个你想要的类名以及加上一对大括号, 这样一个类的结构就定义出来了,只要在里面写代码就可以了, 但是里面写什么? 能写什么?怎样写才是一个完整的类呢?上面讲过来,使用类是为了让它实例出对象来给我们用,这就要知道你想要的是什么样的对象了,像上面我们讲的一个装机配置单上写什么,你装出来的机子就有什么。比如说,一个人就是一个对象,你怎么把一个你看好的人推荐给你们领导呢?当然是越详细越好了:
首先,你会介绍这个人姓名、性别、年龄、身高、体重、电话、家庭住址等等。
然后,你要介绍这个人能做什么,可以开车,会说英语,可以使用电脑等等。
只要你介绍多一点,别人对这个人就多一点了解,这就是我们对一个人的描述, 现在我们总结一下,所有的对象我们用类去描述都是类似的,从上面人的描述可以看到, 做出一个类来,从定义的角度分两部分,第一是从静态上描述,第二是从动态上描述, 静态上的描述就是我们所说的
属性,像上面我们看到的,人的姓名、性别、年龄、身高、体重、电话、家庭住址等等。动态上也就是人的这个对象的功能,比如这个人可以开车,会说英语,可以使用电脑等等,抽象成程序时,我们把动态的写成函数或者说是方法,函数和方法是一样的。所以,所有类都是从属性和方法这两方面去写, 属性又叫做这个类的成员属性,方法叫做这个类的成员方法。
class 人{
成员属性:姓名、性别、年龄、身高、体重、电话、家庭住址
成员方法:可以开车, 会说英语, 可以使用电脑
}
属性:
通过在类定义中使用关键字" var "来声明变量,即创建了类的属性,虽然在声明成员属性的时候可以给定初始值, 但是在声明类的时候给成员属性初使值是没有必要的,比如说要是把人的姓名赋上“张三”,那么用这个类实例出几十个人,这几十个人都叫张三了,所以没有必要, 我们在实例出对象后给成员属性初始值就可以了。
如: var $somevar;
方法(成员函数):
通过在类定义中声明函数,即创建了类的方法。
如: function somefun(参数列表)
{ ... ... }
<?php
class Person
{
//下面是人的成员属性
var $name; //人的名子
var $sex; //人的性别
var $age; //人的年龄
//下面是人的成员方法
function say() //这个人可以说话的方法
{
echo "这个人在说话";
}
function run() //这个人可以走路的方法
{
echo "这个人在走路";
}
}
?>
上面就是一个类的声明,从属性和方法上声明出来的一个类,但是成员属性最好在声明的时候不要给初始的值,因为我们做的人这个类是一个描述信息,将来用它实例化对象,比如实例化出来10个人对象,那么这10个人, 每一个人的名子,性别, 年龄都是不一样的,所以最好不要在这个地方给成员属性赋初值,而是对每个对象分别赋值的。
用同样的办法可以做出你想要的类了, 只要你能用属性和方法能描述出来的实体都可以定义成类,去实例化对象。
5.如何实例化对象
我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了。当定义好类后,我们使用new关键字来生成一个对象。
$对象名称 = new 类名称();
<?php
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()是真正的对象是在堆内存里面的,
可以看出$p1=new Person();等号右边是真正的对象实例,在堆内存里面的实体,上图一共有3次new Person(),所以会在堆里面开辟3个空间,产生3个实例对象,每个对象之间都是相互独立的,使用自己的空间,在PHP里面,只要有一个new这个关键字出现就会实例化出来一个对象,在堆里面开辟一块自己的空间。
每个在堆里面的实例对象是存储属性的,比如说,现在堆里面的实例对象里面都存有姓名、性别和年龄。每个属性又都有一个地址。$p1=new Person();等号的左边$p1是一个引用变量,通过赋值运算符“=”把对象的首地址赋给“$p1”这个引用变量,所以$p1是存储对象首地址的变量,$p1放在栈内存里边,$p1相当于一个指针指向堆里面的对象,所以我们可以通过$p1这个引用变量来操作对象,通常我们也称对象引用为对象。
分享到:
相关推荐
### PHP面向对象手册知识点解析 #### 一、面向对象编程简介 面向对象编程(Object-Oriented Programming,简称 OOP)是一种程序设计范式,它将数据和处理数据的方法捆绑在一起形成“对象”。OOP 的核心思想是通过...
该书是对PHP开发者掌握面向对象技术以及提升编程能力非常有益的参考读物。 在PHP面向对象编程的领域中,有几个重要的概念需要掌握。首先,面向对象编程(OOP)是一种编程范式,它使用“对象”来表示数据和方法。...
### PHP面向对象技术详解 #### 1. 面向对象的概念 面向对象编程(Object Oriented Programming,简称 OOP)是一种程序设计思想,它的核心在于将程序中的数据和操作这些数据的方法组织在一起,形成一个整体,即对象...
面向对象的概念 2.什么是类,什么是对象,类和对象这间的关系 3.什么是面向对象编程呢? 4.如何抽象出一个类? 5.如何实例化对象? 6.如何去使用对象中的成员? 7.特殊的引用“$this”的使用 8.构造...
PHP 在 PHP 5 及以后的版本中,提供了完整的面向对象编程支持。 1. 类(Class)是面向对象编程的基础,它定义了一组属性(Attributes)和方法(Methods),这些属性和方法共同描述了属于该类的所有对象的特征和行为...
面向对象技术是软件开发中一种重要的编程范式,它以对象为基础来构建程序。在PHP中,面向对象编程(OOP)提供了类(Class)和对象(Object)的概念,以支持程序设计的重用性、灵活性和扩展性。 1. 面向对象的概念:...
**PHP面向对象高级编程**指的是在PHP 5及以上版本中,利用其强大的面向对象特性进行更复杂的编程。PHP 5引入了对象模型的重构,包括类、对象、继承、封装和多态等基本概念,同时也增加了如析构函数、抽象类、接口、...
《深入PHP面向对象、模式与实践》第三版是一本针对PHP开发者深入理解面向对象编程、设计模式和实战技巧的专业书籍。作者通过清晰的讲解和丰富的实例,帮助读者提升PHP编程能力,实现更高层次的软件开发。 PHP是一种...
《深入理解PHP 高级技巧、面向对象与核心技术(原书第3版)》是一本专为PHP开发者设计的深入学习书籍,旨在帮助读者掌握PHP的高级特性、面向对象编程以及核心概念。源码文件“phpvqp3_scripts”包含了本书中所讲解的...
在PHP的世界里,面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它在PHP5及更高版本中得到了显著加强。PHP5面向对象的特性为开发者提供了更加灵活和强大的代码组织方式,有助于提升...
《深入PHP:面向对象、模式与实践》是一本专注于PHP编程技术的专业书籍,它涵盖了PHP开发中的核心概念、面向对象编程、设计模式以及最佳实践。这本书对于PHP开发者来说,是提升技能、深化理解的重要资源。 首先,让...
在本项目中,“PHP面向对象(图像计算器)”是一个利用PHP的面向对象编程(OOP)特性构建的图形化计算工具。这个工具旨在帮助用户通过图形界面进行数学计算,提供了一种直观、友好的方式来执行复杂的数学运算。下面将...
#### 二、PHP中的面向对象编程 PHP支持面向对象编程,这使得开发者能够更加灵活高效地编写代码。下面详细介绍PHP中面向对象编程的核心概念和用法: ##### 1. 类与对象 - **类**:定义了一组属性和方法,它们共同...
### PHP面向对象编程知识点概述 #### 一、PHP的发展历程与未来展望 - **起源与发展**:本书首先回顾了PHP的起源,从最初的个人主页工具(PHP2)发展至如今功能强大的服务器端脚本语言。 - **未来展望**:书中还对...
面向对象是目前最流行的一种程序设计和实现思想,无论你是从事企业级开发、互联网应用开发,还是手 机软件开发,都会使用到面向对象的技术;主流的编程语言中,C++,Java,C#,PHP,Python等都是支持 面向对象的语言;...
《深入理解PHP:高级技巧、面向对象与核心技术》是一本专为中初级PHP开发者提升技能而设计的专业书籍。它旨在帮助读者从基础PHP编程跨越到更高级的技术领域,包括优化代码性能、掌握面向对象编程(OOP)概念以及熟悉...
- PhpMyAdmin 是一个基于Web的MySQL数据库管理工具,它广泛采用面向对象编程技术。 - 通过使用PHP的面向对象特性,PhpMyAdmin 能够有效地处理复杂的数据库操作,同时保持了良好的用户界面和用户体验。 - ...
资源名称:LAMP大讲堂 PHP 面向对象技术全面讲解 内容简介:1.面向对象的概念2.什么是类,什么是对象,类和对象之间的关系3.什么是面向对象编程呢?4.如何抽象出一个类?5.如何实例化对象。6.如何去使用对象中的...
PHP 面向对象技术是 PHP 程序设计中的一种重要编程范式,它引入了类和对象的概念,使得代码更加结构化、易于维护和重用。在 PHP 5 及更高版本中,面向对象得到了增强,支持更多高级特性。 1. **面向对象的概念**: ...