面向对象(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,'<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用来实例化对象

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

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

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 '姓名不能为空<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表示调用当前方法的对象

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • OOA:Object-Oriented Analysis面向对象分析方法 是在一个系统的开发过程中进行了系统业务调...
    楚易枫阅读 9,167评论 0 5
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,954评论 18 399
  • 类之间的关系: 1.组合(has-a):一个类的方法操纵另一个类的对象 // ,汽车类has-a引擎类 2.继承(...
    孙浩j阅读 3,434评论 0 1
  • 我是一个谈了六年恋爱的人,此时此刻,忽然发现自己居然不会爱了,这个不会,不是不去的的意思,是丧失的意思。 今天和好...
    誓言就像一个巴掌阅读 1,378评论 0 0
  • 《一》 这是一个非常凄惨,惊悚,唯美的爱情故事!事情是这样的!前几天我在朋友圈说过连着三天忘买水了最后一天下午想起...
    張万福阅读 1,417评论 0 1