博客
关于我
PHP面向对象1
阅读量:260 次
发布时间:2019-03-01

本文共 2649 字,大约阅读时间需要 8 分钟。

面向对象编程入门

面向对象编程(Object-Oriented Programming, OOP)是一种基于对象的编程思想,强调以对象为中心的开发方式。与传统的面向过程编程相比,面向对象编程能够更好地反映实际世界中的事物及其关系,使代码具有更高的可读性和可维护性。

一、面向对象编程的基础

1. 面向对象的概念

面向对象编程关注的是对象本身及其属性和行为。与传统的面向过程编程相比,面向对象编程更强调对象的独立性和复用性。

例子:饭馆吃饭

  • 面向过程:点菜 → 做菜 → 上菜 → 吃饭 → 结账 → 收拾
  • 面向对象:服务员 → 厨师 → 客人

2. 面向对象的优势

  • 代码的可重用性:可以通过复用类实例减少代码冗余
  • 灵活性高:能够更好地适应需求变化
  • 可扩展性强:支持新功能的逐步加入
  • 便于多人协作:不同角色可以专注于特定功能开发
  • 二、类与对象

    1. 对象的定义

    对象是现实世界中具体存在的事物,具有属性和行为。例如,一个学生对象具有姓名、年龄等属性,能够注册、登录等行为。

    2. 类的定义

    类是具有相同属性和行为的对象的集合。例如,所有学生都具有姓名、年龄等属性,能够注册的行为。类是对象的蓝图或模板。

    类与对象的关系

    • 类是对象的集合
    • 对象是类的实例

    实例分析:做菜

    • :厨师
    • 对象:一个具体的厨师(具有特定的技能和经验)

    三、面向对象编程的实现

    1. 类的创建

    在PHP中,类的定义使用class关键字。类名需遵循命名规则,通常采用大驼峰命名法。

    类结构

    class Student {    // 属性    public $name;    private $avatar;    // 方法    public function getAvatar() {        return $this->avatar;    }}

    2. 对象的实例化

    通过new关键字创建对象。对象的唯一性由内存地址决定。

    $student = new Student();

    3. 对象的操作

    • 属性操作:通过->访问和修改属性
    • 方法调用:通过->调用方法

    4. 访问修饰符

    控制成员的访问权限,支持publicprivateprotected三种修饰。

    示例:用户信息管理

    class Student {    private $name;    private $email;    public function setEmail($email) {        $this->email = $email;    }    public function getEmail() {        return $this->email;    }}

    四、类与对象的内存分布

    • 对象:在堆区存储,占用动态内存
    • :在栈区存储,作为对象的蓝图
    • 堆区:存储复杂类型,如对象
    • 栈区:存储基本类型,如整数、字符串

    对象的生命周期

  • 创建:通过new分配内存
  • 使用:通过引用访问
  • 销毁:失去引用后,垃圾回收机制回收
  • 五、封装和抽象

    1. 封装

    通过访问修饰符限制成员的访问范围,便于控制数据的安全性。

    2. 抽象

    将复杂的操作抽象为方法,便于代码的扩展和维护。

    六、继承与多态

    1. 继承

    通过extends实现子类对父类的继承,子类可以重用父类的属性和方法。

    示例:动物继承人

    class Person {    public function eat() {        echo "人在吃";    }}class Animal extends Person {    public function eat() {        echo "动物在吃";    }}

    2. 多态

    通过动态绑定实现同一方法的多种行为。

    示例:动物吃不同的食物

    class Dog extends Animal {    public function eat() {        echo "狗在吃狗食";    }}class Cat extends Animal {    public function eat() {        echo "猫在吃猫粮";    }}

    七、构造方法与析构方法

    1. 构造方法

    在对象创建时自动执行,用于初始化对象属性。

    示例:学生实例化

    class Student {    public function __construct($name, $age) {        $this->name = $name;        $this->age = $age;    }}$student = new Student("张三", 18);

    2. 析构方法

    在对象销毁时自动执行,用于释放内存资源。

    示例:资源释放

    class Student {    private $name;    public function __construct($name) {        $this->name = $name;        echo "对象创建了";    }    public function __destruct() {        echo "对象销毁了";        unset($this);    }}

    八、思考题

  • 学生对象的销毁顺序

    • new Student('tom')new Student('berry')new Student('ketty')
    • 销毁顺序:tomberryketty
  • 对象引用失去

    • new Student('tom')$stu = null;new Student('berry')
    • 销毁顺序:tomberry
  • 多个学生对象同时销毁

    • $stu = new Student('tom');$stu = new Student('berry');$stu = new Student('ketty');
    • 销毁顺序:tomberryketty
  • 九、总结

    面向对象编程是一种强大又灵活的编程思想,通过类和对象的概念,能够更好地组织代码结构,提升代码的可维护性和复用性。在PHP中,面向对象编程通过类的定义、对象的实例化、属性和方法的操作,以及继承和多态的实现,展现了强大的功能。通过合理使用构造方法和析构方法,能够更好地管理对象的生命周期,确保代码的健壮性。

    转载地址:http://miiv.baihongyu.com/

    你可能感兴趣的文章
    OS2ATC2017:阿里研究员林昊畅谈操作系统创新与挑战
    查看>>
    OSCACHE介绍
    查看>>
    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
    查看>>
    OSChina 周五乱弹 ——吹牛扯淡的耽误你们学习进步了
    查看>>
    SQL--mysql索引
    查看>>
    OSChina 周四乱弹 ——程序员为啥要买苹果手机啊?
    查看>>
    OSChina 周日乱弹 —— 2014 年各种奇葩评论集合
    查看>>
    OSChina 技术周刊第十期,每周技术抢先看!
    查看>>
    OSError: no library called “cairo-2“ was foundno library called “cairo“ was foundno library called
    查看>>
    OSError: [WinError 193] %1 不是有效的 Win32 应用程序。
    查看>>
    OSGi与Maven、Eclipse PlugIn的区别
    查看>>
    Osgi环境配置
    查看>>
    OSG——选取和拖拽
    查看>>
    OSG中找到特定节点的方法(转)
    查看>>
    OSG学习:C#调用非托管C++方法——C++/CLI
    查看>>
    OSG学习:几何体的操作(一)——交互事件、简化几何体
    查看>>
    OSG学习:几何体的操作(二)——交互事件、Delaunay三角网绘制
    查看>>
    OSG学习:几何对象的绘制(一)——四边形
    查看>>
    OSG学习:几何对象的绘制(三)——几何元素的存储和几何体的绘制方法
    查看>>
    OSG学习:几何对象的绘制(二)——简易房屋
    查看>>