面向对象介绍
-
概述
- 面向对象是一个编程思想。编程思想有面向过程和面向对象
- 面向过程:编程思路集中的是过程上
- 面向对象:编程思路集中在参与的对象
- 面向对象是一个编程思想。编程思想有面向过程和面向对象
-
好处
- 多人合作方便
- 减少代码冗余,灵活性高
- 代码的可重用性发挥到极致
- 可扩展性强
-
名词
- OOP:面向对象编程(Object Oriented Programming,面向对象编程)
- OOA: 面向对象分析(Object-Oriented Analysis,OOA)
- OOD: 面向对象设计(Object-Oriented Design,OOD)
类和对象
-
概念
- 对象是具体存在的事物,对象是由属性(变量)和方法(函数)组成的
- 类是具有相同属性和行为的一组对象的集合
- 一个类可以创建多个对象
-
理解
- 对象是由属性和方法组成的
- 类是所有对象的相同属性和方法的集合
- 在开发的时候先写类,通过类创建对象,通过对象调用方法和属性
- 一个类可以创建多个对象
在PHP中实现类和对象
创建类
- 语法
class 类名{
//属性
//方法
//常量
}
- 概念
- 类是由属性、方法、常量组成的
- 也可以说类成员有:属性、方法、常量
类名的命名规则
- 规则
- 以字母、下划线开头,后面跟的是字母、数字、下划线
- 不能用PHP关键字做类名
- 类名不区分大小写(变量名区分,关键字、类名不区分大小写)
- 类名用帕斯卡命名法(大驼峰 单词的首字母大写)
<?php
class Student {
//属性
//方法
//常量
}
?>
对象实例化
- 通过new关键字来实例化对象。
- 小括号可以省略
<?php
//定义类
class Student {
//属性
//方法
//常量
}
//实例化对象
$stu1=new Student();
$stu2=new Student;
var_dump($stu1,$stu2);
?>
对象的比较
- 概述
- 相等:结构和保存的值一样就相等
- 全等:指向同一个对象才是全等
- 对象的传递是地址传递
<?php
//定义类
class Student {
}
//实例化对象
$stu1=new Student();
$stu2=new Student;
$stu3=$stu2; //对象传递的是地址
var_dump($stu1==$stu2); //bool(true) ,比较对象的结构
echo '<br>';
var_dump($stu1===$stu2); //bool(false) $stu1和$stu2是否是同一个对象
echo '<br>';
var_dump($stu2===$stu3); //bool(true) $stu2和$stu3是同一个对象
?>
类和对象在内存中的分布
- 说明
- 对象的本质是一个复杂的变量
- 类的本质是一个自定义的复杂数据类型
- 栈区:运行速度快,体积小,保存基本类型
- 堆区:运行速度稍慢,体积大,保存复杂类型
- 实例化的过程就是分配内存空间的过程
- 对象保存在堆区,将堆区的地址保存到栈区
封装
- 说明
- 封装就是有选择性的提供数据
- 通过访问修饰符来实现封装