日期:2024年10月18日

面向对象

面向对象(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。也就是说所有的操作都要通过指定的对象进行。这样一来我们编写程序时大体上主要有两个步骤,步骤一:找对象,根据你要做的事情找到你需要的对象,当然有些时候没有满足你要求的对象,也许还要自己创建一个对象。步骤二:搞对象,搞对象即通过调用对象的属性或方法来完成你的需求。

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

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

5 3 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x