编程中类、对象的概念

来源:互联网 发布:excel筛选数据后复制 编辑:程序博客网 时间:2024/06/05 13:49

  这两天新一届学弟学妹才开始学习编程语言,看到函数和类的时候不是多明白,回想起当年才学习的时候也是这样,所以决定写一篇最直白的博客来帮助大家理解一下什么是类(class),什么是对象(object),顺带提及一点函数(function)。

  类是一个抽象的概念,是对某一类事物的抽象。举一个例子,可以把人类看作一个类,这个类的共性有:第一、站立行走,第二、有一个很发达的大脑,上面这两点都是静态的,描述的是客观的属性(attributes)。人类还需要吃饭、需要睡觉,上面这两点都是动态的行为,即方法(methods)。类可以包含函数,函数在类中就是动态的行为,即方法。
  
  对象就是类的实例化,人类是一个类,而每一个人就是人类的实例化,即每一个人就是一个对象,对象具有类的属性及方法(每个人都站立行走、有一个发达的大脑,并且需要吃饭睡觉)。

  这样来解释继承(inheritance)也就很简单了,继承是小的类来继承大的类。比如刚刚的人类是就是一个很大的类,那学生就是一个比较小的类,学生类可以继承人类这个类,继承之后,学生就具有人类所含有的属性方法(站立行走、有一个发达的大脑,需要吃饭睡觉),此外,学生类由于是一个更小的类,所以也有一些人类所不具有的特性,即更加细化,比如学生类具有去学校上学这个行为,但人类就不具有。反过来,人类和动物类相比,人类是一个小类,动物类是一个大类,人类可以继承动物类。人类会具有动物类的一些属性,比如会死亡。

  那为什么编程中需要创立类这个概念呢?类就相当于一个模板,在模板中把属性和方法定义好,当创建类的对象(object)时,这个对象就自动具有该类的属性和方法,不需要再去手动声明。比如刚刚的人类都有站立行走、有一个发达大脑两个属性,还有吃饭睡觉两个方法。这样我在创建这个类的具体对象,比如小明,他就自动具有那两个属性和两个方法。创建一个对象可能不觉得什么,要是创建1000个对象咋办?如果没有类,创建这1000个对象我们需要一个个去声明他们的属性和方法。所以类可以提高我们的编程效率。
  类还有其它很多优点,比如模块化编程,将具有特定功能的一个组件封装到一个类中。以一次考试场景为例,首先,考试开始时需要老师分发试卷,学生收到试卷后,需要填写姓名学号,然后开始答题,答题结束时,需要上交试卷,这时候老师收取试卷,之后需要批改试卷,学生收到批改完的试卷时,内心的感受不一样。如果按照传统的面向过程编程(即没有类与对象的概念,按照事物发生的顺序进行编程,想实现以上一个简单的考试场景都会比较繁琐),现在面向对象编程(OOP, Object Oriented Programming),首先将该场景的对象进行抽象,抽象出了老师和学生两个类,他们各自的属性方法如下。
  老师类:
     方法1:分发试卷
     方法2:收取试卷
     方法3:批改试卷
  学生类:
     属性1: 心情(得到批改后的试卷的心情)
     方法1:填写姓名学号
     方法2:答题
     方法3:提交试卷

由此可见,面向对象编程将各个模块独立,使得结构更加清晰,可以减少bug的产生、提高编程效率。

原创粉丝点击