博客
关于我
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/

    你可能感兴趣的文章
    Objective-C实现双向A*算法(附完整源码)
    查看>>
    Objective-C实现向量叉乘(附完整源码)
    查看>>
    Objective-C实现图书借阅系统(附完整源码)
    查看>>
    Objective-C实现图片erosion operation侵蚀操作算法(附完整源码)
    查看>>
    Objective-C实现图片的放大缩小(附完整源码)
    查看>>
    Objective-C实现图片腐蚀(附完整源码)
    查看>>
    Objective-C实现图片膨胀(附完整源码)
    查看>>
    Objective-C实现均值滤波(附完整源码)
    查看>>
    Objective-C实现域名转IP(附完整源码)
    查看>>
    Objective-C实现基于 LIFO的堆栈算法(附完整源码)
    查看>>
    Objective-C实现基于 LinkedList 的添加两个数字的解决方案算法(附完整源码)
    查看>>
    Objective-C实现基于事件对象实现线程同步(附完整源码)
    查看>>
    Objective-C实现基于文件流拷贝文件(附完整源码)
    查看>>
    Objective-C实现备忘录模式(附完整源码)
    查看>>
    Objective-C实现复数类+-x%(附完整源码)
    查看>>
    Objective-C实现多组输入(附完整源码)
    查看>>
    Objective-C实现子集总和算法(附完整源码)
    查看>>
    Objective-C实现字符串jaro winkler算法(附完整源码)
    查看>>
    Objective-C实现字符串manacher马拉车算法(附完整源码)
    查看>>
    Objective-C实现字符串wildcard pattern matching通配符模式匹配算法(附完整源码)
    查看>>