面向对象(OOP)

OOP面向对象编程

面向过程:以程序执行顺序为主线来开发
面向对象:将一个项目看成有多个对象组成。通过多个对象组成项目

OOA and OOD

  1. OOA 面向对象分析
  2. OOD 面向对象设计

面向对象有三大特性

  1. 封装
  2. 继承
  3. 多态

对象、类

对象是由属性(成员变量)和方法(函数)组成的。
类是相同属性和方法的集合(抽象)
在程序中我们需要的是属性(变量)和方法(函数)来保存数据和执行逻辑,要调用属性和方法必须要有对象,要有对象必须先有类。
开发顺序:类----对象----属性和方法

属性(成员变量)

属性 = 访问修饰符 + 变量

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,'
'; echo $stu1->name,'
'; //增加属性 $stu->city = '帝都'; var_dump($stu); echo '
'; //删除属性 unset($stu1->name); //判断属性是否存在 var_dump(isset($stu->name),isset($stu1->name));
输出结果

方法

方法 = 访问修饰符 + 函数

/**
 * 函数方法
 */
class Student{
    public function show(){
        echo '春夏秋冬
'; } } $stu = new Student(); $stu -> show();
输出结果

调用属性和方法

在OOP中,要调用属性和方法必须要有对象,new用来实例化对象

实例化对象,调用属性和方法

类、对象、属性、方法在内存中的分布

1.png

经常要找的代码会放在 中,但是因为 的内存空间比较小,大的代码量类似方法类的会放在 中,然后将方法的 引用地址 放入到 中去,以方便能够快速查找。

访问修饰符

修饰符 描述
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 '姓名不能为空
'; exit; } if($sex !== '男' && $sex !== '女'){ echo '性别不正确'; exit; } //赋值 $this->name = $name; $this->sex = $sex; } public function getInfo(){ echo '姓名:'.$this->name.'
'; echo '性别:'.$this->sex.'
'; } } $stu = new Student(); $stu -> setInfo('张三','男'); $stu -> getInfo();
输出结果

$this表示调用当前方法的对象

你可能感兴趣的:(面向对象(OOP))