酆叔のBlog

  • 首页
  • 分享技术
  • 八卦黑料
  • 生活日常
  • 日记
酆叔のBlog
上辈子作恶多端,这辈子早起上班。
  1. 首页
  2. IT技术
  3. 正文

认识PHP(八)面对对象的三大基本特征

2024年4月23日 338点热度 0人点赞 0条评论

面向对象的三大特征:继承、封装、多态。

封装(Encapsulation)

  • 封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
  • 封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。
  • 封装是将数据(属性)和操作数据的方法(方法)封装在一个单一的单元(类)中的概念。它通过限制对类的属性和方法的访问,以实现数据隐藏和保护。

在 PHP 中,可以使用访问修饰符(public、protected 和 private)来控制类的成员的访问权限。

class Car {
    private $brand;
    private $model;

    public function __construct($brand, $model) {
        $this->brand = $brand;
        $this->model = $model;
    }

    public function getInfo() {
        return "This is a {$this->brand} {$this->model}.";
    }
}

$car = new Car("Toyota", "Corolla");
echo $car->brand; // 这里会报错,因为 $brand 是私有属性,无法直接访问

继承(Inheritance)

  • 继承是面向对象的基本特征之一,继承机制允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
  • 继承是一种通过使用已存在的类(称为基类或父类)来创建新类(称为派生类或子类)的机制。子类继承了父类的属性和方法,并且可以拥有自己的属性和方法。

在 PHP 中,使用关键字 extends 来实现继承。

class Vehicle {
    protected $brand;

    public function __construct($brand) {
        $this->brand = $brand;
    }

    public function getInfo() {
        return "This is a {$this->brand}.";
    }
}

class Car extends Vehicle {
    private $model;

    public function __construct($brand, $model) {
        parent::__construct($brand);
        $this->model = $model;
    }

    public function getCarInfo() {
        return "This is a {$this->brand} {$this->model}.";
    }
}

$car = new Car("Toyota", "Corolla");
echo $car->getInfo(); // 输出:This is a Toyota.
echo $car->getCarInfo(); // 输出:This is a Toyota Corolla.

多态(Polymorphism)

  • 多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。
  • 多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
  • 多态是指同一类对象调用同一方法但产生不同的结果。

多态的优点:

  • 消除类型之间的耦合关系
  • 可替换性
  • 可扩充性
  • 接口性
  • 灵活性
  • 简化性

多态存在的三个必要条件:

  • 继承
  • 重写(子类继承父类后对父类方法进行重新定义)
  • 父类引用指向子类对象

多态其实是在继承的基础上的。

在 PHP 中,多态通常通过方法重写(Override)来实现。子类可以重写父类中的方法,以适应自己的需求。

class Shape {
    public function draw() {
        return "Drawing a shape.";
    }
}

class Circle extends Shape {
    public function draw() {
        return "Drawing a circle.";
    }
}

class Rectangle extends Shape {
    public function draw() {
        return "Drawing a rectangle.";
    }
}

$shape1 = new Circle();
$shape2 = new Rectangle();

echo $shape1->draw(); // 输出:Drawing a circle.
echo $shape2->draw(); // 输出:Drawing a rectangle.
# Circle 和 Rectangle 类继承自 Shape 类,并重写了 draw() 方法。当调用 draw() 方法时,根据对象的类型,会调用相应类中的方法,产生不同的结果。这就是多态的概念。
标签: PHP
最后更新:2024年4月23日

酆叔

上辈子作恶多端,这辈子早起上班。

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

最新 热点 随机
最新 热点 随机
2025/05/15 周四 晴 2025/05/12 周一 晴 2025/05/08 周四 多云 2025/05/07 周三 阵雨 2025/05/06 周二 阵雨 2025/04/30 周三 多云
认识PHP(六)数据类型 分享生活 认识PHP(三)超全局变量数组 PHP之静态 工厂模式 PHP 抽象类
腾讯云
又拍云
订阅
订阅

COPYRIGHT © 2024 酆叔のBlog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备2023016219号