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

news2024/11/18 13:55:29

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1018227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024届河南硕士暑期实习经验分享---招商银行篇

本期的实习经验分享,采访到了我的一位优秀的师弟,师弟于今年成功被郑州招商银行信息技术岗录取进行实习,下面他将使用第一人称的方式分享自己寻找实习过程中的一些经验、需要避的坑和在招商银行实习过程中的一些经历,为后续师弟师…

2023.9.11 关于传输层协议 UDP和TCP 详解

目录 UDP协议 TCP协议 TCP十大核心机制 确认应答 超时重传 连接管理(三次握手 四次挥手) 滑动窗口 流量控制 拥塞控制 延时应答 捎带应答 面向字节流 粘包问题 TCP 中的异常处理 经典面试题 对比 TCP 和 UDP 如何使用 UDP 实现可靠传…

l8-d19 广播与组播

一、广播 1.概念 数据包发送方式只有一个接受方,称为单播 如果同时发给局域网中的所有主机,称为广播 只有用户数据报(使用UDP协议)套接字才能广播 广播地址 一个网络内主机号全为1的IP地址为广播地址 发到该地址的数据包被所有的主机接收 255.25…

Linux学习第14天:Linux设备树(一):枝繁叶茂见晴天

本节笔记主要学习了Linux设备树相关知识点,由于内容较多,打算分两天进行总结。今天着重学习Linux设备树,主要包括前三节内容,分别是概念、格式和语法。 本节思维导图内容如下: 一、什么是设备树 设备树可以用一个图来进…

HJ61 放苹果

题目&#xff1a; HJ61 放苹果 题解&#xff1a;递归 f(m,n)表示将m个苹果放在n个盘子中所有的放法。 当n > m时&#xff0c;一定有盘子空着&#xff0c;等效于将m个苹果放到m个盘子中&#xff0c;即f(m,n) f(m,m)当 n < m时&#xff0c; 没有空盘子&#xff0c;那么…

LinkedList 源码分析

LinkedList 是一个基于双向链表实现的集合类。 LinkedList 插入和删除元素的时间复杂度 头部插入/删除&#xff1a;只需要修改头结点的指针即可完成插入/删除操作&#xff0c;因此时间复杂度为 O(1)。尾部插入/删除&#xff1a;只需要修改尾结点的指针即可完成插入/删除操作…

【玩玩Vue】通过vue-store实现枚举管理,用于下拉选项和中英文翻译等

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、store基础用法1.在src下新建store文件夹&#xff0c;在store下新建module文件夹2.在module下新建enums.js文件3.在store下新建getters.js…

Mybatis学习笔记3 在Web中应用Mybatis

Mybatis学习笔记2 增删改查及核心配置文件详解_biubiubiu0706的博客-CSDN博客 技术栈:HTMLServletMybatis 学习目标: 掌握mybatis在web应用中如何使用 Mybatis三大对对象的作用域和生命周期 关于Mybatis中三大对象的作用域和生命周期、 官网说明 ThreadLocal原理及使用 巩…

【古诗文网登录】

文章目录 古诗文网简介python登录 古诗文网简介 古诗文网登录界面 模拟登录两大难点 __VIEWSTATE、__VIEWSTATEGENERATOR两个动态参数验证码 python登录 1、解析登录界面&#xff0c;获取__VIEWSTATE、__VIEWSTATEGENERATOR参数2、获取登陆界面验证码图片&#xff0c;输入…

爬虫 — 自动化爬虫 Selenium

目录 一、介绍二、对比三、安装四、简单使用五、定位元素1、By.ID2、By.CLASS_NAME3、By.NAME4、By.TAG_NAM5、By.XPATH 六、操作元素1、在输入框输入内容并搜索2、打开网站搜索音乐并播放 七、Cookie 操作1、获取所有的 Cookie2、根据 Cookie 的 name 获取 Cookie3、删除某个 …

《低代码指南》——低代码+AI,驱动企业数字资产保值增值

各位嘉宾,大家上午好!非常荣幸能借助钛媒体数字价值峰会这个平台跟大家交流。 了解奥哲的朋友知道,奥哲是国内第一家官宣聚焦低代码领域,并且以低代码定位获得融资的数字化企业。 过去两三年,低代码得到了飞速发展,我在此想跟各位分享下我们在过去实践过程中的一些发现,…

Java“牵手”速卖通商品列表页数据采集+速卖通商品价格数据排序,速卖通API接口申请指南

速卖通是阿里巴巴旗下的面向国际市场打造的跨境电商平台&#xff0c;被称为国际版淘宝&#xff0c;速卖通面向海外买家客户&#xff0c;通过支付宝国际账户进行担保交易&#xff0c;并使用国际物流渠道运输发货&#xff0c;是全球第三大英文在线购物网站。 速卖通商品列表数据…

【资源监视器】设备占用,强制弹出移动硬盘

设备占用&#xff0c;强制弹出移动硬盘 任务管理器中找到资源监视器 资源监视器&#xff1a;找到CPU 输入磁盘&#xff1a;如H: , 点击旁边的刷新 结束句柄 右键

CorelDRAW 2023怎么把图片转化为手绘素描风 简单几步轻松搞定

CorelDRAW 2023是一款非常好用的设计类软件&#xff0c;软件拥有非常多强大又好用的功能&#xff0c;可以帮助设计师快速创造出想要的效果&#xff0c;今天我们就来给大家介绍一下CDR的“素描”艺术笔触。它可以帮助用户快速将普通的图片快速转换成类似素描的风格&#xff0c;在…

AMD GPU 内核驱动分析(二)-gpu_sched

AMDGPU驱动模块的依赖关系如下图,gpu_sched.ko位于GPU驱动架构的中间层&#xff0c;主要负责对应用发送下来的渲染和计算等命令进行调度&#xff1a; 编译gpu_sched.ko 模块源码位于linux-x.x.xx/drivers/gpu/drm/scheduler下&#xff0c;通过CONFIG_DRM_SCHED项配置编译。从M…

更新至2021年,互联网相关指标数据

更新至2021年&#xff0c;互联网相关指标数据 1、来源&#xff1a;国家统计J和各省NJ 2、指标&#xff1a;域名数、网站数、网页数、互联网宽带接入端口、互联网宽带接入用户、城市宽带接入用户、移动互联网用户、移动互联网接入流量、联网上网人数 3、范围&#xff1a;31省…

四、日志编写 —— TinyWebServer

日志编写 —— TinyWebServer 一、 前言 上期已经写完lock类的编写。这期是日志的编写。 对于日志需要弄懂几个基本概念才可以更好的理解和编写日志。 什么是日志&#xff1f;常用的日志级别有哪些&#xff1f;日志的基本格式是什么&#xff1f;异步日志类刷新缓冲区的作用同…

虚幻4学习笔记(12)操控导入的角色、动画蓝图、播放蒙太奇和打包、角色重定向

虚幻4学习笔记 操控导入的角色设置鼠标旋转关掉动态模糊 动画蓝图、播放蒙太奇和打包角色走路奔跑动画shift 奔跑F 跳舞移动打断 跳舞 打包角色重定向姿势调整解决跑步 腿分太开隐藏剑 B站UP谌嘉诚课程&#xff1a;https://www.bilibili.com/video/BV164411Y732 操控导入的角色…

FreeSWITCH 1.10.10 简单图形化界面10 - 鼎兴FXO网关SIP注册公网IPPBX落地

FreeSWITCH 1.10.10 简单图形化界面10 - 鼎兴FXO网关SIP注册公网IPPBX落地 0、 界面预览1、创建一个话务台2、创建PBX SIP中继并设置呼入权限3、设置呼出规则4、设置分机呼出权限5、设置FXO 网关相关信息6、设置FXO网关端口组呼入号码7、设置FXO网关呼叫路由&#xff08;呼入及…

Eclipse搭建struts2框架

新建动态web项目&#xff1b; 输入项目名称&#xff1b; New Runtime后选择如下&#xff0c; 选择tomcat的安装目录&#xff1b; 然后如下&#xff0c;完成&#xff1b; 当前的目录结构如下&#xff1b;之前要配置好java环境&#xff1b; 如果创建项目时没有选中生成web.xml&am…