当前位置: 首页 > news >正文

从头开始学PHP之面向对象

首先介绍下最近情况,因为最近入职了且通勤距离较远,导致精力不够了,而且我发现,人一旦上了班,下班之后就不想再进行任何脑力劳动了(对大部分牛马来说,精英除外)。
话不多说进入今天的正题,面向对象,什么是对象呢?万物皆可对象,在程序里面向对象(Object-Oriented,简称OO)是一种编程思想,对应的还有面向函数编程,今天主要将面向对象

一、什么是面向对象

面向对象是一种编程的思想和方法,它将程序设计中的数据和操作方法封装在一起形成”对象“,并通过对象之间的交互和消息传递来完成程序的功能。

1、对象的主要特点

  1. 对象的行为:对象可以执行的操作,比如:吃饭 讲话 这些就是行为
  2. 对象的形态:对象对不同行为是如何响应的 比如:颜色 尺寸 外形
  3. 对象的表示:对象的表示就相当于身份证,具体区分再相同的行为与状态下有什么不同
    在这里插入图片描述

2、 面向对象编程的特点

1、封装

官方定义

封装(Encapsulation):指将对象的属性和方法封装在一起,使得外部无法直接访问和修改对象的内部状态(这点和变量的作用域很像)。通过使用访问控制修饰符(public private protected)来限制属性和方法(函数)的访问权限,从而实现封装

个人理解

就我找了一下常用的工具放在了我家里(Encapsulation 封装),我可以决定哪些工具别人是可以拿出去用(public 公用),哪些只能在我家里用(protected
受保护),哪些是不能给别人用只能自己用(private 私人)

2、继承

官方定义

继承指可以创建一个新的类(class),该类继承了父类的属性和方法,并且可以添加自己的属性和方法,通过继承,可以避免重复编写相似的代码,提高代码复用率,继承可以使用关键字 extend

个人理解

比如A继承B 那么A就可以获得B的一些财产(public公共的 比如人脉,protected 受保护的比如遗产) 但是不能继承B的私有的东西比如说头发 牙齿等于B不可切割的事务(private 私人的)

3、多态

官方定义

指可以使用一个父类类型的变量来引用不同子类类型的对象,从而实现对不同对象的统一操作,多态可以是代码更加灵活,具有更好的维护性和可扩展性。在php中多态可以通过实现接口(interface)和使用抽象类(abstract class)来实现

个人理解

比如A和C继承了B的人脉关系,可能A用来做实体经济,C可以用来做电商等虚拟经济

二、对象内容

  1. 类:定义了一件事物的抽象特点。类的定义包含数据的形式以及对数据的操作
  2. 对象:类的实例。是对类的具象化
  3. 成员变量:定义在类内部的变量,该变量值对外是不可见的,但是可以通过成员函数访问,在类被实例化之后,该变量即可成为对象的属性
  4. 成员函数:定义在类的内部,可用于访问对象的数据
  5. 继承:继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
  6. 父类:一个可以被其他类继承的类称为父类,或基类,或超类。
  7. 子类:一个类继承其他类称为子类,也可称为派生类。
  8. 多态:多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
  9. 重载:简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
  10. 抽象类 :抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
  11. 封装:封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
  12. 构造函数:主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
  13. 析构函数:析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。

总结

在这里插入图片描述

到此为止,关于php的一些基础概念讲的差不多了,我相信有不少的东西可能没讲到,后期想到的话会陆陆续续的补充。从40多个粉丝到108多个粉丝这样的增长量确实给了我很大的更新动力,在此表达对我那108多个粉丝的由衷感谢!

预告

从零开始学PHP的基础栏目到此告一段落,下期会开个新的栏目 从零开始学PHP之面向对象的栏目

http://www.lryc.cn/news/475949.html

相关文章:

  • C++ | Leetcode C++题解之第519题随机翻转矩阵
  • vrrp和mstp区别
  • 前端页面整屏滚动fullpage.js简单使用
  • JQuery基本介绍和使用方法
  • 【案例】旗帜飘动
  • 大模型思维链推理的综述:进展、前沿和未来
  • 项目一:使用 Spring + SpringMVC + Mybatis + lombok 实现网络五子棋
  • openEuler 系统中 Samba 文件共享服务器管理(windows、linux文件共享操作方法)
  • 使用 Elasticsearch 进行语义搜索
  • 软考:中间件
  • 银行家算法(Banker’s Algorithm)
  • 用魔数严谨的判别文件类型:杜绝上传风险
  • 【MacOS实操】如何基于SSH连接远程linux服务器
  • EXPLAIN 针对性优化 SQL 查询
  • MR30分布式IO:石化行业的智能化革新
  • linux图形化X窗口
  • 练习LabVIEW第三十五题
  • Decision Tree Regressor (决策树) --- 论文实战
  • 三层交换技术,eNSP实验讲解
  • 单链表OJ题(3):合并两个有序链表、链表分割、链表的回文结构
  • 研究了100个小绿书十万加之后,我们发现2024小绿书独家秘籍就是:在于“先抄后超,持续出摊,量大管饱”!
  • Java 中 HashMap集合使用
  • #渗透测试#SRC漏洞挖掘# 信息收集-Shodan进阶之Mongodb未授权访问
  • 平台化运营公司如何在创业市场招商
  • 飞书API-获取tenant_access_token
  • (新)docker desktop镜像迁移
  • 单向函数、单向陷门函数、困难问题
  • MYSQL 小猫钓鱼 - 猫王争霸之〈主从设计〉
  • arcgis坐标系问题
  • ubuntu 24.04中安装 Easyconnect,并解决版本与服务器不匹配问题