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

认识面向对象-PHP8知识详解

面向对象编程,也叫面向对象程序设计,是在面向过程程序设计的基础上发展而来的,它比面向过程编程具有更强的灵活性和扩展性。

它用类、对象、关系、属性等一系列东西来提高编程的效率,其主要的特性是可封装性、可继承性和多态性。

面向对象编程的主要好处就是吧编程的重心从处理过程转移到对现实世界实体的表达。这十分符合人们的正常思维方法。

Image

1、什么是类?

将具有相同属性及相同行为的一组对象称为类(class)。

广义地讲,具有共同性质的事物的集合称为类。在面向对象程序设计中,类是一个独立的单位,它有一个类名,其内部包括成员变量和成员方法,分别用于描述对象的属性和行为。

类是一个抽象的概念,要利用类的方式来解决问题,必须先用类创建一个实例化的对象,然后通过对象访问类的成员变量及调用类的成员方法,来实现程序的功能。就如同“手机”本身是一个抽象的概念,只有使用了一个具体的手机,才能感受到手机的功能。

类(class)是由使用封装的数据及操作这些数据的接口函数组成的一群对象的集合。类可以说是创建对象时所使用的模板。

2、什么是对象?

对象(object)是面向对象技术的核心。可以把我们生活的真实世界看成是由许多大小不同的对象所组成。对象是指现实世界中的对象在计算机中的抽象表示,即仿照现实对象而建立的。例如,人和手机可以看成两个不同的对象。

对象是类的实例化。对象有静态特征和动态特征。静态特征指对象的外观、性质、属性等,动态特征指对象具有的功能、行为等。客观事物是错综复杂的,人们总是习惯从某一目的出发,运用抽象分析的能力从众多特征中抽取具有代表性、能反映对象本质的若干特征加以详细研究。

人们将对象的静态特征抽象为属性,用数据来描述,在 php 语言中称为变量。将对象的动态特征抽象为行为,用一组代码来表示,完成对数据的操作,在PHP语言中称为方法(method)。一个对象由一组属性和一系列对属性进行操作的方法构成。

3、面向对象中的对象是什么?

面向对象的对象(Object),通常是指客观世界中的真实存在的事物,实物,实象。每一个对象都具有唯一性,都有自己的运动规律和运动状态。对象之间相互联系相互作用。另外,对象也可以是一个抽象的事物。

通常情况下,我们把对象分为两个部分:静态部分和动态部分。其中静态部分我们称为“属性”,任何的对象都有自己的属性,是客观存在的,如人的性别高矮胖瘦等属性;动态部分是指对象的行为,如人的走路,吃饭,睡觉等可以执行的动作行为。

如,把人比做人类,那么人类就有了头,颈,躯干,四肢等属性,吃饭,睡觉,走路,码字等行为,而一个正在码字的程序员被视为人类的一个对象,人类和人类对象的关系示意图如下:

在计算机语言中也存在对象,可以定义为相关变量和方法的软件集。对象主要由下面两部分组成。

(1)一组包含各种类型数据的属性。

(2)对属性中的数据进行操作的相关方法。面向对象中常用的技术术语及其含义如下。

A、类(Class):用来描述具有相同属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

B、类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

C、数据成员:类变量或实例变量用于处理类及其实例对象的相关数据。

D、方法重写:如果从父类继承的方法不能满足子类的需求,那么可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

E、实例变量:定义在方法中的变量只作用于当前实例的类。

F、继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

G、实例化:创建一个类的实例,即类的具体对象。(8)方法:类中定义的函数。

H、对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

4、面向对象编程的特点

OOP 是面向对象编程(Object-Oriented Programming)的缩写。对象(Object)在OOP 中是由属性和操作组成的。属性(Attribute)是对象的特性或是与对象关联的变量。操作(Operation)是对象中的方法(Method)或函数(Function)。

由于OOP中最为重要的特性之一就是可封装性,所以对 Object 内部数据的访问,只能通过对象的“操作”来完成,这也被称为对象的“接口”(Interfaces)。

因为类是对象的模板,所以类描述了对象的属性和方法。另外,面向对象编程具有3大特点。

1.封装性

将类的使用和实现分开管理,只保留类的接口,这样开发人员就不用知道类的实现过程,只需要知道如何使用类即可,从而提高了开发效率。

2.继承性

继承是面向对象软件技术中的一个概念。如果一个类A继承自另一个类B,就把这个 A称为“B的子类”,而把B称为“A的父类”。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,从而获得与父类不同的功能。另外,还可以为子类追加新的属性和方法。继承可以实现代码的可重用性,简化了对象和类的创建过程。另外,PHP支持单继承,也就是一个子类只能有一个父类。

3、多态性

多态是面向对象程序设计的主要特征之一,是扩展性在继承之后的又一重大表现。

同一操作作用于不同类的实例,将产生不同的执行效果,即不同类的对象收到相同的消息时,将得到不同的结果。

space

相关文章:

认识面向对象-PHP8知识详解

面向对象编程,也叫面向对象程序设计,是在面向过程程序设计的基础上发展而来的,它比面向过程编程具有更强的灵活性和扩展性。 它用类、对象、关系、属性等一系列东西来提高编程的效率,其主要的特性是可封装性、可继承性和多态性。…...

毕业设计|基于51单片机的空气质量检测PM2.5粉尘检测温度设计

基于51单片机的空气质量检测PM2.5粉尘检测温度设计 1、项目简介1.1 系统构成1.2 系统功能 2、部分电路设计2.1 LED信号指示灯电路设计2.2 LCD1602显示电路2.3 PM2.5粉尘检测电路设计 3、部分代码展示3.1 串口初始化3.1 定时器初始化3.2 LCD1602显示函数 4 演示视频及代码资料获…...

星闪空口技术初探

星闪技术设计目标 在星闪技术的应用场景中,最低的时延要求达到了20us量级,比如智能座舱的主动降噪。最高的可靠性要求达到了99.9999%,比如智能制造的传感器与执行器的消息收发。除了低时延和高可靠之外,高精度同步、多并发和信息…...

如何在不失去理智的情况下调试 TensorFlow 训练程序

一、说明 关于tensorflow的调试,是一个难啃的骨头,除了要有耐力,还需要方法;本文假设您是一个很有耐力的开发者,为您提供一些方法;这些方法也许不容易驾驭,但是依然强调您只要有耐力&#xff0c…...

24. 图论 - 图的表示种类

Hi,你好。我是茶桁。 之前的一节课中,我们了解了图的来由和构成,简单的理解了一下图的一些相关概念。那么这节课,我们要了解一下图的表示,种类。相应的,我们中间需要穿插一些新的知识点用于更好的去理解图…...

C++ 读bin文件,部分代码。赚经验。

编号:1 Head: magicWord[0] 0x0102 magicWord[1] 0x0304 magicWord[2] 0x0506 magicWord[3] 0x0708 version 0x02010004 totalPacketLen 288 platform 0x000a1443 frameNumber 12 timeCpuCycles 172969774 numDetectedObj 99 numTLVs 2 subFrameNumber 0 TLV…...

vue3 父子组件传值

一&#xff0c;子传父 父组件 <script setup> import HelloWorld from ./components/HelloWorld.vue import { ref } from vue//直接赋值页面不会自动渲染&#xff0c;使用ref存储响应式数据 import { defineExpose } from "vue";父传子 let val ref(); con…...

【看懂MPLS LSP表项】

IP网络 R1根据路由表项去查FIB表 目的网络、出口、下一跳 MPLS网络 R1根据LFIB表现去查表&#xff0c; 路由&#xff0c;出口、(标签) 要实现MPLS网络全局可达性&#xff0c;R1应具有到每一个LSR、LSE的路由。 1、R1去FEC(转发等价类) /去往2.2.2.2的路由《路由方…...

代码随想录训练营 单调栈

代码随想录训练营 单调栈 84. 柱状图中最大的矩形&#x1f338; 最后一天~ 84. 柱状图中最大的矩形&#x1f338; 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最…...

Android MQTT

MQTT Android MQTT连接,重新编译Service-1.1.1兼容Android高版本服务 Paho Android Service-1.1.1 Paho Client Mqtt3-1.1.0 资源 名字资源AAR下载GitHub查看Gitee查看 Maven 1.build.grade allprojects {repositories {...maven { url https://jitpack.io }} }2./app/bu…...

Codeforces Round 823 (Div. 2)C

更好的阅读体验 C. Minimum Notation 思路&#xff1a;我们可以进行的操作时将一个位置的数删除然后在任意位置处添加一个比当前数大1并且小于9的数&#xff0c;所以我们的操作只会让一个数变大&#xff0c;我们统计一个最大值的后缀&#xff0c;贪心的考虑如果当前数的后面有…...

npm发布vue3自定义组件库--方法一

npm发布vue3自定义组件库 创建项目 vue create test-ui自定义组件 创建自定义组件&#xff0c;组件名称根据你的需求来&#xff0c;最好一个组件一个文件夹&#xff0c;下图是我的示例。 src/components 组件和你写页面一样&#xff0c;所谓组件就是方便实用&#xff0c;不…...

Centos7原生hadoop环境,搭建Impala集群和负载均衡配置

Centos7原生hadoop环境&#xff0c;搭建Impala集群和负载均衡配置 impala介绍 Impala集群包含一个Catalog Server (Catalogd)、一个Statestore Server (Statestored) 和若干个Impala Daemon (Impalad)。Catalogd主要负责元数据的获取和DDL的执行&#xff0c;Statestored主要负…...

如何在macOS上安装Go并搭建本地编程环境

引言 Go是一种诞生于挫折中的编程语言。在谷歌&#xff0c;开发人员厌倦了在为新项目选择语言时必须做出权衡。有些语言执行效率很高&#xff0c;但需要很长时间编译&#xff0c;而另一些语言易于编写&#xff0c;但在生产环境中运行效率很低。因此&#xff0c;谷歌发明了Go语…...

postgresql-存储过程

postgresql-存储过程 简述PL/pgSQL 代码块结构示例嵌套子块 声明与赋值控制结构IF 语句CASE 语句简单case语句搜索 CASE 语句 循环语句continuewhilefor语句遍历查询结果 foreach 游标游标传参 错误处理报告错误和信息检查断言 捕获异常自定义函数重载VARIADIC 存储过程示例事务…...

改造user ,使得userId相同视为一个对象,user是Key,User的username做value

如果您想要将具有相同userId的用户视为一个对象&#xff0c;其中User对象是键&#xff0c;而User对象的username是值&#xff0c;您可以使用Java的Map<User, String>数据结构来实现。以下是示例代码&#xff1a; java import java.util.*;class User {private int userI…...

力扣刷题-数组-滑动窗口法相关题目总结

209. 长度最小的子数组&#xff08;最小滑窗&#xff09; 给定一个含有 n 个正整数的数组和一个正整数 s &#xff0c;找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组&#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0。 示例&#xff1a; 输入&…...

Qt创建线程(线程池)

1.线程池可以创建线程统一的管理线程&#xff08;统一创建、释放线程&#xff09; 2.使用线程池方法实现点击开始按钮生成10000个随机数&#xff0c;然后分别使用冒泡排序和快速排序排序这10000个随机数&#xff0c;最后在窗口显示排序后的数字&#xff1a; mainwindow.h文件…...

【Java】泛型 之 使用泛型

使用ArrayList时&#xff0c;如果不定义泛型类型时&#xff0c;泛型类型实际上就是 Object&#xff1a; // 编译器警告: List list new ArrayList(); list.add("Hello"); list.add("World"); String first (String) list.get(0); String second (Strin…...

消费者NPS调查,帮您了解客户满意度!

随着市场竞争的日益激烈&#xff0c;了解消费者需求和对企业品牌的认知程度&#xff0c;对于企业的持续发展至关重要。您的客户对您的产品或服务有多满意?您是否想提升客户忠诚度&#xff0c;从而增加业务的持续增长?群狼调研(长沙产品包装测试)为您提供全新的消费者NPS调查服…...

Webpack监视文件修改,自动重新打包文件

方法一&#xff1a;使用watch监视文件变化 在终端中输入以下指令&#xff1a; npx webpack --watch 我们使用这种方法监听文件变化时只会监听我们计算机本地的文件变化&#xff0c;在开发场景中我们的项目是要部署到服务器中的&#xff0c;因此这种方式并不推荐。 方法二&…...

list容器排序案例

案例描述:将Perspn自定义数据类型进行排序&#xff0c;Person中属性有姓名、年龄、身高 排序规则:按照年龄进行升序&#xff0c;如果年龄相同按照身高进行降序 代码示例 #include <iostream> #include <string.h> #include <iterator> #include <vector…...

PHP使用Analysis中英文分词

1、下载Analysis&#xff0c;创建test.php测试 2、引入Analysis实现中文分词 <?php include "./Analysis/Analysis.php";$annew \WordAnalysis\Analysis(); $content"机器学习是一门重要的技术&#xff0c;可以用于数据分析和模式识别。"; //10分词数…...

视频汇聚/视频云存储/视频监控管理平台EasyCVR录像存储功能如何优化?具体步骤是什么?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。视频监控系统EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、…...

Web服务(Web Service)

简介 Web服务&#xff08;Web Service&#xff09;是一种Web应用开发技术&#xff0c;用XML描述、发布、发现Web服务。它可以跨平台、进行分布式部署。 Web服务包含了一套标准&#xff0c;例如SOAP、WSDL、UDDI&#xff0c;定义了应用程序如何在Web上实现互操作。 Web服务的服…...

Java第4章 类的继承

目录 内容说明 章节内容 一、继承的概念 二、继承的使用 extends关键字...

Linux网络和安全:配置、远程访问与防御指南

文章目录 Linux 网络和安全引言网络配置IP地址配置配置网络接口防火墙设置安全性加强 Linux网络配置及端口管理网络配置命令端口管理 防火墙和安全性设置防火墙管理工具安全性设置 Linux远程访问技术&#xff1a;SSH和VPNSSHVPN Linux软件和服务网络工具文件传输VPN技术安全审计…...

如何搭建Linux环境

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 当我们想要搭建一个Linux系统&#xff0c;我们应该怎么使用呢&#xff1f; 今天我就带领大家搭建Linux系统&#xff01;&#xff01;&#xff01; 目录 Linux环境安装 双系统&#xff08;不推荐&#xff09; poww…...

【解决方案】edge浏览器批量添加到集锦功能消失的解决方案

edge的集锦功能很好用&#xff0c;右键标签页会出现如下选项&#xff1a; 但在某次edge更新后&#xff0c;右键标签页不再出现该选项&#xff1a; 这里可以参考为什么我的Edge浏览器右键标签页没有“将所有标签页添加到集锦”功能&#xff1f; - Microsoft Community 一文提出…...

JS操作字符串方法学习系列(1)-每天学习10个方法

目录 **字符串连接 (Concatenation)**:**字符串长度 (Length)**:**字符串查找 (Search)**:**字符串替换 (Replace)**:**字符串分割 (Split)**:**字符串大小写转换 (Case Conversion)**:**字符串切片 (Slice)**:**字符串删除空白 (Trim)**:**字符串检查开头和结尾 (Starts/EndsW…...

温州网站建设方案表/怎么创建一个网站

1. 简介 Android系统--视图绘制主要由以下几部分组成&#xff1a; 1) Canvas(画布) 提供画图所需要的所有工具&#xff0c;即各种draw函数&#xff1b;当前可用的画布对象有&#xff1a;具有硬件加速的GLES20Canvas和GLES20RecordingCanvas&#xff0c;不使用硬件加速的Compati…...

做视频网站需要/手机游戏性能优化软件

使用 pip 包管理工具下载第三方包时&#xff0c;如果出现以下错误&#xff1a; 将报错路径下的对应包文件删除&#xff1a; 然后重新 pip install 安装即可&#xff1a;...

定制型网站制作明细报价表/seo是什么东西

No module named MYSQLdb 问题解决 问题描述&#xff1a; 在Linux中写Python查询MySQL数据库时报错&#xff1a;ImportError: No module named MySQLdb 对于不同的系统和程序有如下的解决方法&#xff1a; easy_install mysql-python (mix os) pip install mysql-python (m…...

wordpress 媒体库分类/磁力猫最好磁力搜索引擎

报错&#xff1a;error: tr1/cinttypes: No such file or directory场景&#xff1a;PHP的memcache扩展性能不如PHP memcached扩展&#xff0c;功能也少于PHP memcached扩展,安装PHP memcached扩展需要首先安装libmemcached库&#xff0c;Redhat 5系列的系统包括CentOS 5编译安…...

学做网站快吗/百度快照关键词推广

当图中存在负权边时&#xff0c;dijkstra算法就不再适用&#xff0c;这是需要用到bellman_ford算法。算法思想是从每次连接所有的边&#xff0c;但是只更新到前一个结点的距离。如果不存在负权环&#xff0c;则在循环n次&#xff08;结点数量&#xff09;后一定可以得到答案。 …...

怎么做网络棋牌网站/举一个网络营销的例子

MVVM 涉及面试题&#xff1a;什么是 MVVM&#xff1f;比之 MVC 有什么区别&#xff1f; 首先先来说下 View 和 Model View 很简单&#xff0c;就是用户看到的视图Model 同样很简单&#xff0c;一般就是本地数据和数据库中的数据 基本上&#xff0c;我们写的产品就是通过接口从…...