首页 > 其他分享 >15.面向对象

15.面向对象

时间:2022-11-10 22:00:56浏览次数:43  
标签:15 对象 现实 事物 程序 面向对象 抽象

面向对象

面向对象(Object Oriented Programming)几乎是目前所有主流语言所必备的特点。什么是面向对象呢?回答这个问题,需要先明白另一个问题:什么是对象?

什么是对象

程序的本质是对现实事物的抽象。所谓抽象就是用一些手段把现实事物表示出来。比如,画人像就是对人的抽象,写一本人物的传记就是对一个人一生的抽象,你的个人简历就是对你的抽象。

程序的作用就是用代码去表示现实的事物,由于现实的事物都是极其复杂的,不可能在代码中体现出事物的所有具体细节。所以只能采用抽象的形式,提取出事物的特点,然后通过代码呈现。

在现实的世界中,无论事物再复杂,一旦被抽象进入到程序之中,都会被转换为一段数据来存储,这些数据就被我们称为对象(Object)。换句话说,所有的事物到了程序中都会变成对象。

日常生活中使用的数字,到了程序中变成了Number对象。日常生活中说的语言文字,到了程序中变成了String对象。用来上网的浏览器,到了程序中变成了Window对象。日常中使用的日期时间,到了程序中变成了Date对象。总之,在程序中一切都是对象!

你也许会疑问,如何通过对象来表示出一个现实的事物呢?现实的事物是非常复杂的,但在程序之中,把每一个事物都分成了两个部分,一部分是数据,还有一部分是功能。

拿人举例子,人的身高、姓名、性别、年龄、攻击力、敏捷等等都属于是人的数据,这些数据在对象中被称为属性。人可以吃饭、睡觉、攻击、跑这些种种的都是人所具备的功能,这些功能在对象中被称为方法。

无论是再复杂的事物在程序中都由属性和方法两个部分组成,只需要这两个部分即可体现出事物的所有特征,不信你自己想一下,你随便说出你具备的某个特点,它一定不会超出属性和方法的范畴。

举个例子,现在我需要在JS中表示一个人的信息,这个人叫猪八戒、年龄28、地址高老庄、他会睡觉。很显然猪八戒、28、高老庄这些属于属性,睡觉属于方法:

const zbj = {
     name:'猪八戒',
     age:28,
     address:'高老庄',
     sleep:function () {
         console.log(`${this.name}睡着了~~~`);
     }
 };

这样我们就将一个人的信息转换为了JS中的对象,以此类推所有的事物都可以转换为这样的对象。

面向对象呢?

知道什么是对象了,面向对象就简单了。所谓的面向对象指我们在编写程序时,所有的操作都是通过对象进行的。比如,表示数字,要先找到数字的对象Number。表示字符串,要找到字符串的对象String。进行数学运算,要找到数学运算的对象Math。刷新页面,要先找到表示浏览器地址栏的对象Location。也就是说所有的操作都要通过指定的对象进行。这样一来我们编写程序时大体上主要有两个步骤,步骤一:找对象,根据你要做的事情找到你需要的对象,当然有些时候没有满足你要求的对象,也许还要自己创建一个对象。步骤二:搞对象,搞对象即通过调用对象的属性或方法来完成你的需求。

面向对象本身的难点并不在于概念的理解,而是对象的定义,也就是我们如何能根据需要来定义一个对象。这就要求我们要具备两个能力,能力一:你得会定义对象。能力二:你得知道如何对事物进行抽象。抽象事物的能力需要一点一点锻炼,至于定义对象就相对简单了。

面向对象中的对象主要具有三个特点:封装、继承和多态。掌握了这三个特点即可轻松的创建一个你需要的对象。

标签:15,对象,现实,事物,程序,面向对象,抽象
From: https://www.cnblogs.com/SZX03/p/16878936.html

相关文章

  • [15-445]Database Storage2 related memo
    Storage1主要介绍了slotted-page组织数据的情况。但是这种方式会有一些问题比如1.页分裂(比如在一个页上面操作,后续对其进行操作可能会有删除的操作后续可能需要使用......
  • day15-HTTP协议02
    HTTP协议029.HTTP练习练习一请写一篇关于HTTP协议的笔记,要求:描述清楚HTTP请求头,响应头的格式请求头:响应头:请求头和响应头中各个头字段的含义(请求头和响应头......
  • zt Xilinx FPGA PTP IEEE1588使用
     https://blog.csdn.net/Zhu_Zhu_2009/article/details/98208167参考Zynq-7000APSoC-PrecisionTimingwithIEEE1588v2ProtocolTechTipXilinxTSNSolutionLin......
  • 面向对象
    对象的内存:1.加载class文件2.申明局部变量3.在堆内存中开辟空间4.默认初始化5.显式初始化6.构造方法初始化7.将堆内存中的地址赋值给左边的变量printfSystem......
  • 题解 P3974【[TJOI2015]组合数学】
    postedon2022-10-2814:11:41|under题解|sourceproblem给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走。问至少走多少次才能将财宝捡完。此对......
  • Java零基础-面向对象入门案例:宠物商店
    Java零基础-面向对象入门案例:宠物商店案例需求:设计宠物类,包含有:编号、名称、年龄、种类、性别、是否防疫等信息,设计宠物商店,实现宠物添加、删除、修改宠物信息,记录宠物......
  • Go 面试每天一篇(第 15 天)
    我们应该坚信美好的事物一定会发生,毫不怀疑地坚信,加油!继续我们的每天一篇,看下​​昨天题目​​的解析:1.参考代码及解析:C。知识点:常量,Go语言中的字符串是只读的。2.参考......
  • [JavaScript-06]面向对象
    1.面向对象//大括号就是对象p={a:1,b:2,c:3,}//系统对象全部基于window//console.log(window);//window.alert(1);//alert(2);//console......
  • H5游戏开发-面向对象编程
    七、面向对象编程1.认识类与对象类是一种复杂的数据结构,他是将不同类型的数据与这些数据相关的操作封装在一起的集合体。对象是类的实例,是类描述的具体事物。(类是对象的......
  • 15. 三数之和
    15.三数之和给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0......