• 面向对象(类/继承/封装/多态)详解


    简介:

    面向对象编程(Object-Oriented Programming,OOP)是一种广泛应用于软件开发的编程范式。它基于一系列核心概念,包括类、继承、封装和多态。在这篇详细的解释中,我们将探讨这些概念,并说明它们如何在PHP等编程语言中实现。

    类(Class):

    类是OOP的基础。它是一种用于创建对象的蓝图或模板。类定义了对象的属性(成员变量)和方法(成员函数)。类是用户定义的数据类型,允许将相关数据和功能封装在一个单一的单元中。
    在PHP中,创建一个类的语法如下:

    class Person {
        public $name; // 属性
        public function sayHello() { // 方法
            echo "Hello, my name is " . $this->name;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这个例子中,我们定义了一个名为Person的类,它有一个属性$name和一个方法sayHello。

    对象(Object):

    对象是类的实例。它是根据类的定义创建的实体,可以访问类中定义的属性和方法。对象是类的具体实例,它包含了类定义的数据和行为。
    在PHP中,创建一个类的对象的语法如下:

    $person = new Person();
    $person->name = "John";
    $person->sayHello(); // 输出 "Hello, my name is John"
    
    • 1
    • 2
    • 3

    在这个例子中,我们创建了一个名为 p e r s o n 的对象,它是 P e r s o n 类的实例,可以访问 person的对象,它是Person类的实例,可以访问 person的对象,它是Person类的实例,可以访问name属性和sayHello方法。

    继承(Inheritance):

    继承是OOP中的一项关键概念。它允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以继承父类的特性,并可以添加新的属性和方法,或者重写继承的方法。

    class Student extends Person {
        public $studentId;
    }
    
    • 1
    • 2
    • 3

    在这个示例中,Student类继承了Person类的属性和方法,同时添加了$studentId属性。这允许Student对象访问Person类的sayHello方法以及自己的属性和方法。
    继承有助于代码重用,促进了代码的组织和扩展。

    封装(Encapsulation):

    封装是一种将数据和操作数据的方法组合在一起的概念。它强调了数据的隐藏和保护,以防止未经授权的访问。封装将数据(属性)设为私有或受保护的,同时提供公共的方法(接口)来访问和操作数据。

    class Person {
        private $name;
        public function setName($name) {
            $this->name = $name;
        }
        public function getName() {
            return $this->name;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这个示例中,$name属性被设置为私有,只能通过setName和getName方法进行访问。这样可以控制数据的访问和修改,确保数据的完整性和安全性。
    封装有助于隐藏内部实现细节,提高代码的可维护性和安全性。

    多态(Polymorphism):

    多态是一种让不同的类实现相同的接口或继承相同的父类,并根据具体的实例执行不同操作的能力。多态允许使用通用的接口来处理不同类型的对象。

    interface Shape {
        public function area();
    }
    
    class Circle implements Shape {
        public function area() {
            // 计算圆形面积
        }
    }
    
    class Square implements Shape {
        public function area() {
            // 计算正方形面积
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这个示例中,Shape接口定义了一个area方法,然后Circle和Square类都实现了这个接口。这使得我们可以使用统一的方式来计算不同形状的面积,而无需关心具体是圆形还是正方形。
    多态提高了代码的灵活性和可扩展性,使代码更易于维护和修改。

    结论 :

    面向对象编程是一种强大的编程范式,它使代码更易于理解、扩展和维护。类、继承、封装和多态是OOP的核心概念,它们为程序员提供了更好的工具来构建复杂的应用程序。通过合理地应用这些概念,你可以创建出高质量、可重用和可扩展的代码,以应对不断变化的需求。这种面向对象的方法对于现代软件开发至关重要,无论是在PHP还是其他编程语言中。
    在这里插入图片描述

  • 相关阅读:
    Python使用turtle绘制简单图形-绘制“圆“turtle.circle()
    Android 13.0 SystemUI状态栏屏蔽掉通知栏不显示通知
    Vue、React和小程序中的组件通信:父传子和子传父
    <Senior High School Math>: inequality question
    Java(97)Java的JNI学习(一)
    系统可用性:SRE口中的3个9,4个9...到底是个什么东西?
    IDEA 中使用 SparkSQL 远程连接 Hive
    JS数组对象去重
    一键迁移接口,即刻搭建企业接口开放平台 - YesApi接口大师v3.15
    刷题 DFS : 受伤的皇后 (python, java)
  • 原文地址:https://blog.csdn.net/wangxuanyang_zer/article/details/134083672