从头开始学PHP之面向对象

devtools/2024/11/6 11:47:19/

首先介绍下最近情况,因为最近入职了且通勤距离较远,导致精力不够了,而且我发现,人一旦上了班,下班之后就不想再进行任何脑力劳动了(对大部分牛马来说,精英除外)。
话不多说进入今天的正题,面向对象,什么是对象呢?万物皆可对象,在程序里面向对象(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.ppmy.cn/devtools/131748.html

相关文章

DNS查询服务器的全流程解析

### DNS查询服务器的基本流程,能画出图更好,并说明为什么DNS查询为什么不直接从单一服务器查询ip,而是要经过多次查询,多次查询不会增加开销么(即DNS多级查询的优点)? - **用户发起请求**&#…

如何从 Android 图库中恢复误删除的照片

如果您正在阅读这篇文章,那么您肯定意外地从 Android 设备中删除了照片。并且您正在寻找一种简单的方法来恢复 Android 图库中已删除的照片。 从图库恢复已删除的照片 随着技术的进步,现在使用单个设备(即 Android 手机)&#xf…

2.2 python数据库-mysql

以mysql为例,数据库的操作包括:连接、断开、新增库表、新增数据、查询数据、删除数据和修改数据 1. 连接与关闭 #!/usr/bin/python3import pymysqldb pymysql.connect(hostlocalhost,usertestuser,passwordtest123,databaseTESTDB)# 使用 cursor() 方…

linux多IP地址环境下,java读取本机实际的IP地址

一、ifconfig 可以看到,本机有许多IP地址,还未许多未截取。 而实际的IP是192.168.8.28 所以我们在读取本机IP的时候,需要去掉无效的IP。 因为本机安装了docker导致生成了许多虚拟网段的IP。 二、源码 import java.net.InetAddress; impor…

Vue.js组件开发:构建高效、可复用的前端应用

Vue.js组件开发:构建高效、可复用的前端应用 Vue.js是一款轻量级、灵活且易于上手的前端框架,广泛应用于构建现代Web应用。Vue.js的核心思想是通过组件化的方式来构建应用,每个组件都是一个独立的、可复用的代码块,负责渲染特定的…

网页版五子棋—— WebSocket 协议

目录 前言 一、背景介绍 二、原理解析 1.连接过程(握手) 2.报文格式 三、代码示例 1.服务端代码 (1)TestAPI 类 (2)WebSocketConfig 类 2.客户端代码 3.代码演示 结尾 前言 从本篇文章开始&am…

Mac删除软件,步骤超简单!

Mac删除软件,有人容易,有人难,但不管怎么样,你确定你删除的软件是彻底干净的吗?看看张女士的故事咯。 周末的下午,张女士坐在咖啡馆里,端着一杯热气腾腾的拿铁,准备用她的MacBook处…

HTB:PermX[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many TCP ports are listening on PermX? 使用nmap对靶机TCP端口进行开放扫描 2.What is the default domain name used by the web server on the box? 使用curl访问靶机80端口 3.On what subdomain of permx.htb is there an o…