OOP面向对象编程
面向过程:以程序执行顺序为主线来开发
面向对象:将一个项目看成有多个对象组成。通过多个对象组成项目
OOA and OOD
- OOA 面向对象分析
- OOD 面向对象设计
面向对象有三大特性
- 封装
- 继承
- 多态
对象、类
对象是由属性(成员变量)和方法(函数)组成的。
类是相同属性和方法的集合(抽象)
在程序中我们需要的是属性(变量)和方法(函数)来保存数据和执行逻辑,要调用属性和方法必须要有对象,要有对象必须先有类。
开发顺序:类----对象----属性和方法
属性(成员变量)
属性 = 访问修饰符 + 变量
header('Content-type:text/html;charset=utf-8');
/**
* OOP属性的基本操作
*/
class Student{
public $name = '李白';
public $sex = '男';
}
//实例化对象
$stu = new Student();
$stu1 = new Student();
$stu -> name; //stu的name和stu1的name不是同一空间
$stu1 -> name;
//调用属性
echo $stu->name,'<br>';
echo $stu1->name,'<br>';
//增加属性
$stu->city = '帝都';
var_dump($stu);
echo '<br>';
//删除属性
unset($stu1->name);
//判断属性是否存在
var_dump(isset($stu->name),isset($stu1->name));
方法
方法 = 访问修饰符 + 函数
/**
* 函数方法
*/
class Student{
public function show(){
echo '春夏秋冬<br>';
}
}
$stu = new Student();
$stu -> show();
调用属性和方法
在OOP中,要调用属性和方法必须要有对象,new用来实例化对象
类、对象、属性、方法在内存中的分布
经常要找的代码会放在 栈 中,但是因为 栈 的内存空间比较小,大的代码量类似方法类的会放在 堆 中,然后将方法的 引用地址 放入到 栈 中去,以方便能够快速查找。
访问修饰符
修饰符 | 描述 |
---|---|
public(公有的) | 可以在类的内部和外部访问 |
private(私有的) | 只能在类的内部访问 |
protected | 在类的内部和子类中访问(在整个继承链上访问) |
在OOP中,属性一般都是私有的,通过公有的方法对私有的属性进行赋值和访问。(目的是为了过滤数据)
header('Content-type:text/html;charset=utf-8');
/**
* 过滤数据
*/
class Student{
private $name;
private $sex;
public function setInfo($name,$sex){
//过滤数据
if($name == ''){
echo '姓名不能为空<br>';
exit;
}
if($sex !== '男' && $sex !== '女'){
echo '性别不正确';
exit;
}
//赋值
$this->name = $name;
$this->sex = $sex;
}
public function getInfo(){
echo '姓名:'.$this->name.'<br>';
echo '性别:'.$this->sex.'<hr>';
}
}
$stu = new Student();
$stu -> setInfo('张三','男');
$stu -> getInfo();
$this表示调用当前方法的对象